blob: d3be3df954b041ee9f5a1a88b76911e9815465b3 [file] [log] [blame] [edit]
{
"version info": {
"schema version": 2,
"api version": "1.0.12",
"comment": "from git branch: github-sc_main commit: 1e1d007aa441c1df2f2f35d7aef7dc9731fafd48",
"date": "2023-01-25 05:30:01Z"
},
"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"
},
{
"vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
"text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
}
]
},
"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"
},
{
"vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
"text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
}
]
},
"vkEnumerateInstanceVersion": {
"(VK_VERSION_1_1)": [
{
"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"
}
]
},
"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"
},
{
"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"
},
{
"vuid": "VUID-vkCreateInstance-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
]
},
"VkInstanceCreateInfo": {
"(VK_EXT_debug_report,VK_EXT_debug_utils)+(VK_EXT_debug_report)": [
{
"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>VK_EXT_debug_report</code>"
}
],
"(VK_EXT_debug_report,VK_EXT_debug_utils)+(VK_EXT_debug_utils)": [
{
"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 <a href=\"#VK_EXT_debug_utils\">VK_EXT_debug_utils</a>"
}
],
"core": [
{
"vuid": "VUID-VkInstanceCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>"
},
{
"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=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a> or <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>"
},
{
"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>"
},
{
"vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
},
{
"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"
},
{
"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"
},
{
"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"
}
]
},
"VkValidationFeaturesEXT": {
"(VK_EXT_validation_features)": [
{
"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>"
},
{
"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>"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>"
},
{
"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"
},
{
"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"
}
]
},
"VkApplicationInfo": {
"!(VKSC_VERSION_1_0)": [
{
"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>"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkApplicationInfo-apiVersion-05021",
"text": " If <code>apiVersion</code> is not <code>0</code> and its variant is <code>VKSC_API_VARIANT</code>, then it <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#VKSC_API_VERSION_1_0\">VKSC_API_VERSION_1_0</a>"
}
],
"(VK_EXT_application_parameters)": [
{
"vuid": "VUID-VkApplicationInfo-key-05093",
"text": " The <code>key</code> value of each <a href=\"#VkApplicationParametersEXT\">VkApplicationParametersEXT</a> structure in the <a href=\"#VkApplicationInfo\">VkApplicationInfo</a>::<code>pNext</code> chain <strong class=\"purple\">must</strong> be unique for each <code>vendorID</code> and <code>deviceID</code> pairing"
}
],
"core": [
{
"vuid": "VUID-VkApplicationInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>"
},
{
"vuid": "VUID-VkApplicationInfo-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=\"#VkApplicationParametersEXT\">VkApplicationParametersEXT</a>"
},
{
"vuid": "VUID-VkApplicationInfo-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=\"#VkApplicationParametersEXT\">VkApplicationParametersEXT</a>"
},
{
"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"
},
{
"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"
}
]
},
"VkApplicationParametersEXT": {
"(VK_EXT_application_parameters)": [
{
"vuid": "VUID-VkApplicationParametersEXT-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT</code>"
}
]
},
"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>"
},
{
"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"
},
{
"vuid": "VUID-vkDestroyInstance-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
],
"!(VKSC_VERSION_1_0)": [
{
"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"
},
{
"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>"
}
]
},
"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"
},
{
"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"
},
{
"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"
}
]
},
"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"
},
{
"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"
}
]
},
"vkGetPhysicalDeviceProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
"text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
},
{
"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"
}
]
},
"VkPhysicalDeviceProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>"
},
{
"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=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlPropertiesEXT\">VkPhysicalDeviceSubgroupSizeControlPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>, or <a href=\"#VkPhysicalDeviceVulkanSC10Properties\">VkPhysicalDeviceVulkanSC10Properties</a>"
},
{
"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"
}
]
},
"VkPhysicalDeviceVulkan11Properties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [
{
"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>"
}
]
},
"VkPhysicalDeviceVulkan12Properties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [
{
"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>"
}
]
},
"VkPhysicalDeviceVulkanSC10Properties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkanSC10Properties-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES</code>"
}
]
},
"VkPhysicalDeviceIDProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>"
}
]
},
"VkPhysicalDeviceDriverProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2,VK_KHR_driver_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceDriverProperties-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES</code>"
}
]
},
"VkPhysicalDevicePCIBusInfoPropertiesEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
{
"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>"
}
]
},
"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"
},
{
"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"
},
{
"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"
}
]
},
"vkGetPhysicalDeviceQueueFamilyProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
"text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
},
{
"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"
},
{
"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"
}
]
},
"VkQueueFamilyProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>"
},
{
"vuid": "VUID-VkQueueFamilyProperties2-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=\"#VkQueueFamilyCheckpointProperties2NV\">VkQueueFamilyCheckpointProperties2NV</a>"
},
{
"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"
}
]
},
"VkQueueFamilyCheckpointProperties2NV": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)+(VK_KHR_synchronization2)": [
{
"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>"
}
]
},
"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter",
"text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
},
{
"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"
},
{
"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"
},
{
"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"
}
]
},
"VkPerformanceCounterKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPerformanceCounterKHR-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR</code>"
},
{
"vuid": "VUID-VkPerformanceCounterKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
]
},
"VkPerformanceCounterDescriptionKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPerformanceCounterDescriptionKHR-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR</code>"
},
{
"vuid": "VUID-VkPerformanceCounterDescriptionKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
]
},
"vkEnumeratePhysicalDeviceGroups": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
"text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle"
},
{
"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"
},
{
"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"
}
]
},
"VkPhysicalDeviceGroupProperties": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>"
},
{
"vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
]
},
"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"
},
{
"vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
"text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkCreateDevice-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
],
"(VK_EXT_application_parameters)": [
{
"vuid": "VUID-vkCreateDevice-key-05092",
"text": " The <code>key</code> value of each <a href=\"#VkApplicationParametersEXT\">VkApplicationParametersEXT</a> structure in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkCreateDevice-deviceMemoryRequestCount-05095",
"text": " The sum of <code>deviceMemoryRequestCount</code> over all <code>VkDeviceObjectReservationCreateInfo</code> structures <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxMemoryAllocationCount</code>"
},
{
"vuid": "VUID-vkCreateDevice-samplerRequestCount-05096",
"text": " The sum of <code>samplerRequestCount</code> over all <code>VkDeviceObjectReservationCreateInfo</code> structures <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxSamplerAllocationCount</code>"
}
]
},
"VkDeviceCreateInfo": {
"!(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
"text": " The <code>queueFamilyIndex</code> member of each element of <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pQueueCreateInfos</code>"
}
],
"(VK_VERSION_1_1)": [
{
"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 is a protected-capable queue and one is not a protected-capable queue"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"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>"
}
],
"(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
"text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><code>VK_AMD_negative_viewport_height</code></code>"
}
],
"(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
"text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><code>VK_KHR_maintenance1</code></code> and <code><code>VK_AMD_negative_viewport_height</code></code>"
}
],
"(VK_EXT_buffer_device_address+VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328",
"text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><code>VK_KHR_buffer_device_address</code></code> and <code><code>VK_EXT_buffer_device_address</code></code>"
}
],
"(VK_VERSION_1_2)+(VK_EXT_buffer_device_address)": [
{
"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><code>VK_EXT_buffer_device_address</code></code>"
}
],
"(VK_VERSION_1_2)": [
{
"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"
},
{
"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"
}
],
"(VK_VERSION_1_2)+(VK_KHR_shader_draw_parameters)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-04476",
"text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_shader_draw_parameters\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then <code>VkPhysicalDeviceVulkan11Features</code>::<code>shaderDrawParameters</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
}
],
"(VK_VERSION_1_2)+(VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02831",
"text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_draw_indirect_count\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>drawIndirectCount</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
}
],
"(VK_VERSION_1_2)+(VK_KHR_sampler_mirror_clamp_to_edge)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02832",
"text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_sampler_mirror_clamp_to_edge\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerMirrorClampToEdge</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
}
],
"(VK_VERSION_1_2)+(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02833",
"text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_descriptor_indexing\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>descriptorIndexing</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
}
],
"(VK_VERSION_1_2)+(VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02834",
"text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_sampler_filter_minmax\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerFilterMinmax</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
}
],
"(VK_VERSION_1_2)+(VK_EXT_shader_viewport_index_layer)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02835",
"text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_shader_viewport_index_layer\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputViewportIndex</code> and <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputLayer</code> <strong class=\"purple\">must</strong> both be <code>VK_TRUE</code>"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pProperties-04451",
"text": " If the <code><code>VK_KHR_portability_subset</code></code> extension is included in <code>pProperties</code> of <a href=\"#vkEnumerateDeviceExtensionProperties\">vkEnumerateDeviceExtensionProperties</a>, <code>ppEnabledExtensions</code> <strong class=\"purple\">must</strong> include \"VK_KHR_portability_subset\""
}
],
"(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04478",
"text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04479",
"text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04480",
"text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
}
],
"(VK_KHR_fragment_shading_rate,VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04481",
"text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04482",
"text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04483",
"text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"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"
}
],
"(VK_EXT_shader_atomic_float)": [
{
"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"
},
{
"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"
}
],
"(VK_EXT_shader_atomic_float2)": [
{
"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"
}
],
"core": [
{
"vuid": "VUID-VkDeviceCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
},
{
"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=\"#VkApplicationParametersEXT\">VkApplicationParametersEXT</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceObjectReservationCreateInfo\">VkDeviceObjectReservationCreateInfo</a>, <a href=\"#VkFaultCallbackInfo\">VkFaultCallbackInfo</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceColorWriteEnableFeaturesEXT\">VkPhysicalDeviceColorWriteEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicState2FeaturesEXT\">VkPhysicalDeviceExtendedDynamicState2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExternalMemorySciBufFeaturesNV\">VkPhysicalDeviceExternalMemorySciBufFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>, <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeaturesEXT\">VkPhysicalDeviceImageRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR\">VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeaturesEXT\">VkPhysicalDeviceSubgroupSizeControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSynchronization2FeaturesKHR\">VkPhysicalDeviceSynchronization2FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT\">VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT\">VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, <a href=\"#VkPhysicalDeviceVulkanSC10Features\">VkPhysicalDeviceVulkanSC10Features</a>, <a href=\"#VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT\">VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
},
{
"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=\"#VkApplicationParametersEXT\">VkApplicationParametersEXT</a> or <a href=\"#VkDeviceObjectReservationCreateInfo\">VkDeviceObjectReservationCreateInfo</a>"
},
{
"vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
"text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
}
]
},
"VkDeviceGroupDeviceCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
"text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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"
}
]
},
"VkDeviceObjectReservationCreateInfo": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-maxImageViewArrayLayers-05014",
"text": " <code>maxImageViewArrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageArrayLayers</code>"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-maxImageViewMipLevels-05015",
"text": " <code>maxImageViewMipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on the maximum of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageDimension1D</code>, <code>maxImageDimension2D</code>, <code>maxImageDimension3D</code>, and <code>maxImageDimensionCube</code>"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-maxLayeredImageViewMipLevels-05016",
"text": " <code>maxLayeredImageViewMipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxImageDimension1D</code>, <code>maxImageDimension2D</code>, <code>maxImageDimension3D</code>, and <code>maxImageDimensionCube</code>"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-subpassDescriptionRequestCount-05017",
"text": " <code>subpassDescriptionRequestCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>renderPassRequestCount</code> multiplied by <a href=\"#VkPhysicalDeviceVulkanSC10Properties\">VkPhysicalDeviceVulkanSC10Properties</a>::<code>maxRenderPassSubpasses</code>"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-attachmentDescriptionRequestCount-05018",
"text": " <code>attachmentDescriptionRequestCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>renderPassRequestCount</code> multiplied by <a href=\"#VkPhysicalDeviceVulkanSC10Properties\">VkPhysicalDeviceVulkanSC10Properties</a>::<code>maxFramebufferAttachments</code>"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO</code>"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-pPipelineCacheCreateInfos-parameter",
"text": " If <code>pipelineCacheCreateInfoCount</code> is not <code>0</code>, <code>pPipelineCacheCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineCacheCreateInfoCount</code> valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structures"
},
{
"vuid": "VUID-VkDeviceObjectReservationCreateInfo-pPipelinePoolSizes-parameter",
"text": " If <code>pipelinePoolSizeCount</code> is not <code>0</code>, <code>pPipelinePoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelinePoolSizeCount</code> valid <a href=\"#VkPipelinePoolSize\">VkPipelinePoolSize</a> structures"
}
]
},
"VkPerformanceQueryReservationInfoKHR": {
"(VKSC_VERSION_1_0)+(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPerformanceQueryReservationInfoKHR-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR</code>"
}
]
},
"VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV": {
"(VKSC_VERSION_1_0)+(VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_SEMAPHORE_SCI_SYNC_POOL_RESERVATION_CREATE_INFO_NV</code>"
}
]
},
"VkPipelinePoolSize": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkPipelinePoolSize-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE</code>"
},
{
"vuid": "VUID-VkPipelinePoolSize-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
]
},
"vkDestroyDevice": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkDestroyDevice-device-05137",
"text": " All child objects created on <code>device</code>, except those with no explicit <a href=\"#fundamentals-objectmodel-no-destroy\">free or destroy command</a>, <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
}
],
"!(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkDestroyDevice-device-00378",
"text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
},
{
"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"
},
{
"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>"
}
],
"core": [
{
"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"
},
{
"vuid": "VUID-vkDestroyDevice-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
]
},
"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>"
},
{
"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]"
},
{
"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"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-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=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
"text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceQueueCreateInfo-flags-02861",
"text": " If the <a href=\"#features-protectedMemory\">protected memory</a> feature is not enabled, the <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set"
},
{
"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"
}
]
},
"VkDeviceQueueGlobalPriorityCreateInfoEXT": {
"(VK_EXT_global_priority)": [
{
"vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
},
{
"vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
"text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
}
]
},
"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"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-vkGetDeviceQueue-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
}
]
},
"vkGetDeviceQueue2": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkGetDeviceQueue2-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"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"
}
]
},
"VkDeviceQueueInfo2": {
"(VK_VERSION_1_1)": [
{
"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"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
]
},
"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>"
},
{
"vuid": "VUID-vkCreateCommandPool-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkCreateCommandPool-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkCreateCommandPool-device-05068",
"text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <a href=\"#VkDeviceObjectReservationCreateInfo\">VkDeviceObjectReservationCreateInfo</a>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created"
}
]
},
"VkCommandPoolCreateInfo": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkCommandPoolCreateInfo-flags-02860",
"text": " If the protected memory feature is not enabled, the <code>VK_COMMAND_POOL_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkCommandPoolCreateInfo-pNext-05002",
"text": " The <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkCommandPoolMemoryReservationCreateInfo\">VkCommandPoolMemoryReservationCreateInfo</a> structure"
}
],
"core": [
{
"vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
},
{
"vuid": "VUID-VkCommandPoolCreateInfo-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=\"#VkCommandPoolMemoryReservationCreateInfo\">VkCommandPoolMemoryReservationCreateInfo</a>"
},
{
"vuid": "VUID-VkCommandPoolCreateInfo-sType-unique",
"text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
},
{
"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"
}
]
},
"VkCommandPoolMemoryReservationCreateInfo": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolReservedSize-05003",
"text": " <code>commandPoolReservedSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
},
{
"vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolMaxCommandBuffers-05004",
"text": " <code>commandPoolMaxCommandBuffers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
},
{
"vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolMaxCommandBuffers-05090",
"text": " <code>commandPoolMaxCommandBuffers</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceVulkanSC10Properties\">VkPhysicalDeviceVulkanSC10Properties</a>::<code>maxCommandPoolCommandBuffers</code>"
},
{
"vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-commandPoolMaxCommandBuffers-05074",
"text": " The number of command buffers reserved by all command pools plus <code>commandPoolMaxCommandBuffers</code> <strong class=\"purple\">must</strong> be less than or equal to the total number of command buffers requested via <a href=\"#VkDeviceObjectReservationCreateInfo\">VkDeviceObjectReservationCreateInfo</a>::<code>commandBufferRequestCount</code>"
},
{
"vuid": "VUID-VkCommandPoolMemoryReservationCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO</code>"
}
]
},
"vkGetCommandPoolMemoryConsumption": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkGetCommandPoolMemoryConsumption-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkGetCommandPoolMemoryConsumption-commandPool-parameter",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
},
{
"vuid": "VUID-vkGetCommandPoolMemoryConsumption-commandBuffer-parameter",
"text": " If <code>commandBuffer</code> is not <code>NULL</code>, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
},
{
"vuid": "VUID-vkGetCommandPoolMemoryConsumption-pConsumption-parameter",
"text": " <code>pConsumption</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCommandPoolMemoryConsumption\">VkCommandPoolMemoryConsumption</a> structure"
},
{
"vuid": "VUID-vkGetCommandPoolMemoryConsumption-commandPool-parent",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
},
{
"vuid": "VUID-vkGetCommandPoolMemoryConsumption-commandBuffer-parent",
"text": " If <code>commandBuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>commandPool</code>"
}
]
},
"VkCommandPoolMemoryConsumption": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkCommandPoolMemoryConsumption-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION</code>"
},
{
"vuid": "VUID-VkCommandPoolMemoryConsumption-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
}
]
},
"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>"
},
{
"vuid": "VUID-vkResetCommandPool-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkResetCommandPool-commandPool-parameter",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
},
{
"vuid": "VUID-vkResetCommandPool-flags-zerobitmask",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
},
{
"vuid": "VUID-vkResetCommandPool-commandPool-parent",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkResetCommandPool-flags-05005",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT</code>"
}
]
},
"vkDestroyCommandPool": {
"!(VKSC_VERSION_1_0)": [
{
"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>"
},
{
"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"
},
{
"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>"
}
]
},
"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"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength",
"text": " <code>pAllocateInfo-&gt;commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
}
]
},
"VkCommandBufferAllocateInfo": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-05006",
"text": " The number of command buffers currently allocated from <code>commandPool</code> plus <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <a href=\"#VkCommandPoolMemoryReservationCreateInfo\">VkCommandPoolMemoryReservationCreateInfo</a>::<code>commandPoolMaxCommandBuffers</code> specified when <code>commandPool</code> was created"
}
],
"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>"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
"text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
}
]
},
"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>"
},
{
"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>"
},
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
},
{
"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"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkResetCommandBuffer-commandPoolResetCommandBuffer-05135",
"text": " <a href=\"#limits-commandPoolResetCommandBuffer\"><code>commandPoolResetCommandBuffer</code></a> <strong class=\"purple\">must</strong> be supported"
}
]
},
"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>"
},
{
"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>"
},
{
"vuid": "VUID-vkFreeCommandBuffers-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
"text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
},
{
"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>"
}
]
},
"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>"
},
{
"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>"
},
{
"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"
},
{
"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 precise occlusion queries 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>"
},
{
"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"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
},
{
"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"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkBeginCommandBuffer-commandPoolResetCommandBuffer-05136",
"text": " If <a href=\"#limits-commandPoolResetCommandBuffer\"><code>commandPoolResetCommandBuffer</code></a> is not supported, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">initial state</a>"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandPoolMultipleCommandBuffersRecording-05007",
"text": " If <a href=\"#limits-commandPoolMultipleCommandBuffersRecording\"><code>commandPoolMultipleCommandBuffersRecording</code></a> is <code>VK_FALSE</code>, then the command pool that <code>commandBuffer</code> was created from <strong class=\"purple\">must</strong> have no other command buffers in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBufferSimultaneousUse-05008",
"text": " If <a href=\"#limits-commandBufferSimultaneousUse\"><code>commandBufferSimultaneousUse</code></a> is <code>VK_FALSE</code>, then <code>pBeginInfo-&gt;flags</code> <strong class=\"purple\">must</strong> not include <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>"
}
]
},
"VkCommandBufferBeginInfo": {
"!(VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
"text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
"text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
}
],
"!(VKSC_VERSION_1_0)": [
{
"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>"
}
],
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-05009",
"text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and <code>secondaryCommandBufferNullOrImagelessFramebuffer</code> is <code>VK_TRUE</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>"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-05010",
"text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code> and <code>secondaryCommandBufferNullOrImagelessFramebuffer</code> is <code>VK_FALSE</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code> and <strong class=\"purple\">must</strong> not have been created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>"
}
],
"(VK_KHR_dynamic_rendering)": [
{
"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>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>"
},
{
"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>"
},
{
"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 <code>VkCommandBufferInheritanceRenderingInfoKHR</code> structure"
}
],
"(VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"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 <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, the <code>colorAttachmentCount</code> member of that structure <strong class=\"purple\">must</strong> be equal to the value of <code>VkCommandBufferInheritanceRenderingInfoKHR</code>::<code>colorAttachmentCount</code>"
}
],
"core": [
{
"vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
},
{
"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>"
},
{
"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"
},
{
"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"
}
]
},
"VkCommandBufferInheritanceInfo": {
"core": [
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
"text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
"text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788",
"text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789",
"text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
"text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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>"
}
]
},
"VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
"text": " If the <a href=\"#features-inheritedConditionalRendering\">inherited conditional rendering</a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
}
]
},
"VkCommandBufferInheritanceRenderPassTransformInfoQCOM": {
"(VK_QCOM_render_pass_transform)": [
{
"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>"
}
]
},
"VkCommandBufferInheritanceViewportScissorInfoNV": {
"(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782",
"text": " If the <a href=\"#features-inheritedViewportScissor2D\">inherited viewport scissor</a> feature is not enabled, <code>viewportScissor2D</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783",
"text": " If the <a href=\"#features-multiViewport\">multiple viewports</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>"
},
{
"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>"
},
{
"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"
},
{
"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>"
}
]
},
"VkCommandBufferInheritanceRenderingInfoKHR": {
"(VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06006",
"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>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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>"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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>"
}
],
"(VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-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>"
}
]
},
"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>"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkEndCommandBuffer-None-01978",
"text": " Conditional rendering <strong class=\"purple\">must</strong> not be <a href=\"#active-conditional-rendering\">active</a>"
}
],
"(VK_EXT_debug_utils)": [
{
"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>"
}
],
"(VK_EXT_debug_marker)": [
{
"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 <code>vkCmdDebugMarkerBeginEXT</code> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <code>vkCmdDebugMarkerEndEXT</code>"
}
]
},
"vkQueueSubmit2KHR": {
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-synchronization2-03866",
"text": " The <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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 an <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>"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-semaphore-03872",
"text": " The <code>semaphore</code> member of any element of the <code>pWaitSemaphoreInfos</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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>"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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>"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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>"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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>"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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 Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens before the acquire operation"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-queue-parameter",
"text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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=\"#VkSubmitInfo2KHR\">VkSubmitInfo2KHR</a> structures"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
},
{
"vuid": "VUID-vkQueueSubmit2KHR-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>"
}
],
"(VK_KHR_synchronization2)+(VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueueSubmit2KHR-semaphore-03873",
"text": " Any <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 <code>VkSemaphoreTypeKHR</code> 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 semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
}
],
"(VK_KHR_synchronization2)+(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkQueueSubmit2KHR-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"
}
],
"(VK_KHR_synchronization2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkQueueSubmit2KHR-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>"
}
]
},
"VkSubmitInfo2KHR": {
"(VK_KHR_synchronization2)+(VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSubmitInfo2KHR-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"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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>"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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>"
}
],
"(VK_KHR_synchronization2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkSubmitInfo2KHR-flags-03886",
"text": " If <code>flags</code> includes <code>VK_SUBMIT_PROTECTED_BIT_KHR</code>, all elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be protected command buffers"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-flags-03887",
"text": " If <code>flags</code> does not include <code>VK_SUBMIT_PROTECTED_BIT_KHR</code>, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
}
],
"(VK_KHR_synchronization2)+(VK_KHR_dynamic_rendering)": [
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"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"
}
],
"(VK_KHR_synchronization2)+(VK_KHR_dynamic_rendering)+(VK_EXT_sample_locations)": [
{
"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"
}
],
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubmitInfo2KHR-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR</code>"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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=\"#VkPerformanceQuerySubmitInfoKHR\">VkPerformanceQuerySubmitInfoKHR</a>"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-sType-unique",
"text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-flags-parameter",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubmitFlagBitsKHR\">VkSubmitFlagBitsKHR</a> values"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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=\"#VkSemaphoreSubmitInfoKHR\">VkSemaphoreSubmitInfoKHR</a> structures"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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=\"#VkCommandBufferSubmitInfoKHR\">VkCommandBufferSubmitInfoKHR</a> structures"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-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=\"#VkSemaphoreSubmitInfoKHR\">VkSemaphoreSubmitInfoKHR</a> structures"
}
]
},
"VkSemaphoreSubmitInfoKHR": {
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03929",
"text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR</code>"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03930",
"text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR</code> or <code>VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR</code>"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-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>"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR</code>"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-semaphore-parameter",
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-parameter",
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits2KHR\">VkPipelineStageFlagBits2KHR</a> values"
}
],
"(VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03931",
"text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT</code>"
}
],
"(VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03932",
"text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
}
],
"(VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03933",
"text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT</code>"
}
],
"(VK_KHR_synchronization2)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03934",
"text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV</code>"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-03935",
"text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV</code>"
}
],
"(VK_KHR_synchronization2)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-04956",
"text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV</code>"
}
],
"(VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-04957",
"text": " If the <a href=\"#features-subpassShading\">subpass shading</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI</code>"
}
],
"(VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-stageMask-04995",
"text": " If the <a href=\"#features-invocationMask\">invocation mask image</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI</code>"
}
],
"(VK_KHR_synchronization2)+(VK_KHR_device_group_creation,VK_VERSION_1_1)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-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"
}
],
"(VK_KHR_synchronization2)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfoKHR-semaphore-05094",
"text": " If <code>semaphore</code> has a payload of <code>NvSciSyncObj</code>, <code>value</code> <strong class=\"purple\">must</strong> be calculated by application via <a href=\"#NvSciSync-extension-page\">NvSciSync APIs</a>."
}
]
},
"VkCommandBufferSubmitInfoKHR": {
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-03890",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfoKHR-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR</code>"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfoKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfoKHR-commandBuffer-parameter",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
}
],
"(VK_KHR_synchronization2)+(VK_KHR_device_group_creation,VK_VERSION_1_1)": [
{
"vuid": "VUID-VkCommandBufferSubmitInfoKHR-deviceMask-03891",
"text": " If <code>deviceMask</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be a valid device mask"
}
]
},
"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"
},
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"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 Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens-before the acquire operation"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-vkQueueSubmit-queue-parameter",
"text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle"
},
{
"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"
},
{
"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"
},
{
"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>"
}
],
"!(VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
"text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution"
}
],
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"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 semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
}
],
"(VK_KHR_performance_query)": [
{
"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"
}
],
"(VK_VERSION_1_1)": [
{
"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 an <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a> structure in its <code>pNext</code> chain with <code>protectedSubmit</code> equal to <code>VK_TRUE</code>"
}
]
},
"VkSubmitInfo": {
"core": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04090",
"text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04091",
"text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:pWaitDstStageMask <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>"
},
{
"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>"
},
{
"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>"
},
{
"vuid": "VUID-VkSubmitInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
},
{
"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=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkPerformanceQuerySubmitInfoKHR\">VkPerformanceQuerySubmitInfoKHR</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, or <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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"
},
{
"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>"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04092",
"text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04093",
"text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04094",
"text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>"
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04095",
"text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04096",
"text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04097",
"text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
}
],
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-03937",
"text": " If the <a href=\"#features-synchronization2\"><code>synchronization2</code></a> feature is not enabled, pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not be <code>0</code>"
}
],
"!(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04996",
"text": " pname:pWaitDstStageMask <strong class=\"purple\">must</strong> not be <code>0</code>"
}
],
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"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>"
},
{
"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>"
}
],
"(VK_VERSION_1_1)": [
{
"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"
},
{
"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"
}
],
"(VK_KHR_dynamic_rendering)": [
{
"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>"
},
{
"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>"
},
{
"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 between that render pass instance and the render pass instance that resumes it"
},
{
"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"
}
],
"(VK_KHR_dynamic_rendering)+(VK_EXT_sample_locations)": [
{
"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"
}
]
},
"VkTimelineSemaphoreSubmitInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkTimelineSemaphoreSubmitInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO</code>"
},
{
"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"
},
{
"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"
}
]
},
"VkD3D12FenceSubmitInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"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 <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure"
},
{
"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 <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure"
}
]
},
"VkWin32KeyedMutexAcquireReleaseInfoKHR": {
"(VK_KHR_win32_keyed_mutex)": [
{
"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 <code>VkImportMemoryWin32HandleInfoKHR</code>::<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>"
}
]
},
"VkProtectedSubmitInfo": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
}
]
},
"VkDeviceGroupSubmitInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
"text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
"text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
"text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
},
{
"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"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
"text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
},
{
"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"
},
{
"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"
},
{
"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"
}
]
},
"VkPerformanceQuerySubmitInfoKHR": {
"(VK_KHR_performance_query)": [
{
"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>"
},
{
"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>"
}
]
},
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"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>"
},
{
"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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-contents-06018",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <a href=\"#vkCmdBeginRenderPass\">vkCmdBeginRenderPass</a>, its <code>contents</code> parameter <strong class=\"purple\">must</strong> have been set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>"
},
{
"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"
},
{
"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"
},
{
"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>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
"text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries <a href=\"#queries-operation-active\">active</a>"
},
{
"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>"
},
{
"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"
},
{
"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"
},
{
"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>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
},
{
"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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
"text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
},
{
"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>"
}
],
"!(VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdExecuteCommands-contents-00095",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, that render pass instance <strong class=\"purple\">must</strong> have been begun with the <code>contents</code> parameter of <code>vkCmdBeginRenderPass</code> set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, 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"
}
],
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-02865",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <code>VkRenderPassTransformBeginInfoQCOM</code> 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 <code>VkCommandBufferInheritanceRenderPassTransformInfoQCOM</code> in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-02866",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <code>VkRenderPassTransformBeginInfoQCOM</code> 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 <code>VkCommandBufferInheritanceRenderPassTransformInfoQCOM</code>::<code>transform</code> identical to <code>VkRenderPassTransformBeginInfoQCOM</code>::<code>transform</code>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-02867",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <code>VkRenderPassTransformBeginInfoQCOM</code> 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 <code>VkCommandBufferInheritanceRenderPassTransformInfoQCOM</code>::<code>renderArea</code> identical to <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderArea</code>"
}
],
"(VK_VERSION_1_1)": [
{
"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"
},
{
"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"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdExecuteCommands-None-02286",
"text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
}
],
"(VK_KHR_dynamic_rendering)": [
{
"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"
},
{
"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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-flags-06024",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, its <code>VkRenderingInfoKHR</code>::<code>flags</code> parameter <strong class=\"purple\">must</strong> have included <code>VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR</code>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pBeginInfo-06025",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, 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>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-flags-06026",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, the <code>flags</code> member of the <code>VkCommandBufferInheritanceRenderingInfoKHR</code> 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 <code>VkRenderingInfoKHR</code>::<code>flags</code> parameter to <code>vkCmdBeginRenderingKHR</code>, excluding <code>VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR</code>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-colorAttachmentCount-06027",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, the <code>colorAttachmentCount</code> member of the <code>VkCommandBufferInheritanceRenderingInfoKHR</code> 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 <code>VkRenderingInfoKHR</code>::<code>colorAttachmentCount</code> parameter to <code>vkCmdBeginRenderingKHR</code>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-imageView-06028",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, if the <code>imageView</code> member of an element of the <code>VkRenderingInfoKHR</code>::<code>pColorAttachments</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the corresponding element of the <code>pColorAttachmentFormats</code> member of the <code>VkCommandBufferInheritanceRenderingInfoKHR</code> 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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pDepthAttachment-06029",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, if the <code>VkRenderingInfoKHR</code>::<code>pDepthAttachment-&gt;imageView</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthAttachmentFormat</code> member of the <code>VkCommandBufferInheritanceRenderingInfoKHR</code> 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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pStencilAttachment-06030",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, if the <code>VkRenderingInfoKHR</code>::<code>pStencilAttachment-&gt;imageView</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>stencilAttachmentFormat</code> member of the <code>VkCommandBufferInheritanceRenderingInfoKHR</code> 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"
}
],
"(VK_KHR_dynamic_rendering)+(VK_EXT_sample_locations)": [
{
"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"
}
],
"(VK_KHR_dynamic_rendering)+(VK_KHR_multiview,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdExecuteCommands-viewMask-06031",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code>, the <code>viewMask</code> member of the <code>VkCommandBufferInheritanceRenderingInfoKHR</code> 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 <code>VkRenderingInfoKHR</code>::<code>viewMask</code> parameter to <code>vkCmdBeginRenderingKHR</code>"
}
],
"(VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06032",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> includes a <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, if the <code>imageView</code> member of an element of the <code>VkRenderingInfoKHR</code>::<code>pColorAttachments</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the corresponding element of the <code>pColorAttachmentSamples</code> member of the <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> 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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06033",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> includes a <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, if the <code>VkRenderingInfoKHR</code>::<code>pDepthAttachment-&gt;imageView</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of the <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> 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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06034",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> includes a <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, if the <code>VkRenderingInfoKHR</code>::<code>pStencilAttachment-&gt;imageView</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of the <code>depthStencilAttachmentSamples</code> member of the <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> 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"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06035",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, if the <code>imageView</code> member of an element of the <code>VkRenderingInfoKHR</code>::<code>pColorAttachments</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>VkCommandBufferInheritanceRenderingInfoKHR</code>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06036",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, if the <code>VkRenderingInfoKHR</code>::<code>pDepthAttachment-&gt;imageView</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>VkCommandBufferInheritanceRenderingInfoKHR</code>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06037",
"text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance begun with <code>vkCmdBeginRenderingKHR</code> and the <code>pNext</code> chain of <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a> does not include a <code>VkAttachmentSampleCountInfoAMD</code> or <code>VkAttachmentSampleCountInfoNV</code> structure, if the <code>VkRenderingInfoKHR</code>::<code>pStencilAttachment-&gt;imageView</code> parameter to <code>vkCmdBeginRenderingKHR</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the value of <code>VkCommandBufferInheritanceRenderingInfoKHR</code>::<code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be equal to the sample count used to create that image view"
}
]
},
"VkDeviceGroupCommandBufferBeginInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
"text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
},
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
"text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
},
{
"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>"
}
]
},
"vkCmdSetDeviceMask": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
"text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
"text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
},
{
"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"
},
{
"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"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
},
{
"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"
}
]
},
"vkCreateFence": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkCreateFence-device-05068",
"text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <a href=\"#VkDeviceObjectReservationCreateInfo\">VkDeviceObjectReservationCreateInfo</a>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created"
}
],
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkCreateFence-pNext-05106",
"text": " If the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a> includes <a href=\"#VkExportFenceSciSyncInfoNV\">VkExportFenceSciSyncInfoNV</a>, then <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_FENCE_CREATE_SIGNALED_BIT</code>"
}
],
"core": [
{
"vuid": "VUID-vkCreateFence-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkCreateFence-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
]
},
"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>"
},
{
"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=\"#VkExportFenceSciSyncInfoNV\">VkExportFenceSciSyncInfoNV</a>"
},
{
"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"
},
{
"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"
}
]
},
"VkExportFenceCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_fence)": [
{
"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>"
},
{
"vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
},
{
"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"
}
],
"(VK_VERSION_1_1,VK_KHR_external_fence)+(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkExportFenceCreateInfo-pNext-05107",
"text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportFenceSciSyncInfoNV\">VkExportFenceSciSyncInfoNV</a> structure, <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncFence</code> and <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncExport</code>, or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncFence</code> and <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncExport</code> <strong class=\"purple\">must</strong> be enabled"
}
]
},
"VkExportFenceWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"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>"
}
]
},
"VkFenceGetWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"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"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
"text": " If <code>handleType</code> is defined as an NT handle, <code>vkGetFenceWin32HandleKHR</code> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>"
},
{
"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>"
},
{
"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"
},
{
"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"
}
]
},
"vkGetFenceFdKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-vkGetFenceFdKHR-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
"text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
}
]
},
"VkFenceGetFdInfoKHR": {
"(VK_KHR_external_fence_fd)": [
{
"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"
},
{
"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"
},
{
"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>"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
},
{
"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>"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
}
]
},
"VkExportFenceSciSyncInfoNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkExportFenceSciSyncInfoNV-pAttributes-05108",
"text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a reconciled <code>NvSciSyncAttrList</code>"
},
{
"vuid": "VUID-VkExportFenceSciSyncInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_SCI_SYNC_INFO_NV</code>"
}
]
},
"vkGetPhysicalDeviceSciSyncAttributesNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pSciSyncAttributesInfo-05109",
"text": " If <code>pSciSyncAttributesInfo-&gt;primitiveType</code> is <code>VK_SCI_SYNC_PRIMITIVE_TYPE_FENCE_NV</code> then <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncFence</code> or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pSciSyncAttributesInfo-05110",
"text": " If <code>pSciSyncAttributesInfo-&gt;primitiveType</code> is <code>VK_SCI_SYNC_PRIMITIVE_TYPE_SEMAPHORE_NV</code> then <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncSemaphore</code> or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncSemaphore2</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pAttributes-05111",
"text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid <code>NvSciSyncAttrList</code> and <strong class=\"purple\">must</strong> not be <code>NULL</code>"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-physicalDevice-parameter",
"text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSciSyncAttributesNV-pSciSyncAttributesInfo-parameter",
"text": " <code>pSciSyncAttributesInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSciSyncAttributesInfoNV\">VkSciSyncAttributesInfoNV</a> structure"
}
]
},
"VkSciSyncAttributesInfoNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkSciSyncAttributesInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SCI_SYNC_ATTRIBUTES_INFO_NV</code>"
},
{
"vuid": "VUID-VkSciSyncAttributesInfoNV-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkSciSyncAttributesInfoNV-clientType-parameter",
"text": " <code>clientType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSciSyncClientTypeNV\">VkSciSyncClientTypeNV</a> value"
},
{
"vuid": "VUID-VkSciSyncAttributesInfoNV-primitiveType-parameter",
"text": " <code>primitiveType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSciSyncPrimitiveTypeNV\">VkSciSyncPrimitiveTypeNV</a> value"
}
]
},
"vkGetFenceSciSyncFenceNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkGetFenceSciSyncFenceNV-pGetSciSyncHandleInfo-05112",
"text": " <code>pGetSciSyncHandleInfo-&gt;handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV</code>"
},
{
"vuid": "VUID-vkGetFenceSciSyncFenceNV-sciSyncFence-05113",
"text": " <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncFence</code> or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkGetFenceSciSyncFenceNV-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkGetFenceSciSyncFenceNV-pGetSciSyncHandleInfo-parameter",
"text": " <code>pGetSciSyncHandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetSciSyncInfoNV\">VkFenceGetSciSyncInfoNV</a> structure"
},
{
"vuid": "VUID-vkGetFenceSciSyncFenceNV-pHandle-parameter",
"text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a pointer value"
}
]
},
"vkGetFenceSciSyncObjNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkGetFenceSciSyncObjNV-pGetSciSyncHandleInfo-05114",
"text": " <code>pGetSciSyncHandleInfo-&gt;handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV</code>"
},
{
"vuid": "VUID-vkGetFenceSciSyncObjNV-sciSyncFence-05115",
"text": " <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncFence</code> or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkGetFenceSciSyncObjNV-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkGetFenceSciSyncObjNV-pGetSciSyncHandleInfo-parameter",
"text": " <code>pGetSciSyncHandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetSciSyncInfoNV\">VkFenceGetSciSyncInfoNV</a> structure"
},
{
"vuid": "VUID-vkGetFenceSciSyncObjNV-pHandle-parameter",
"text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a pointer value"
}
]
},
"VkFenceGetSciSyncInfoNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkFenceGetSciSyncInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_SCI_SYNC_INFO_NV</code>"
},
{
"vuid": "VUID-VkFenceGetSciSyncInfoNV-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkFenceGetSciSyncInfoNV-fence-parameter",
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
},
{
"vuid": "VUID-VkFenceGetSciSyncInfoNV-handleType-parameter",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
}
]
},
"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"
},
{
"vuid": "VUID-vkDestroyFence-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkDestroyFence-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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>"
}
],
"!(VKSC_VERSION_1_0)": [
{
"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"
},
{
"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>"
}
]
},
"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"
},
{
"vuid": "VUID-vkGetFenceStatus-fence-parameter",
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
},
{
"vuid": "VUID-vkGetFenceStatus-fence-parent",
"text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
}
]
},
"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"
},
{
"vuid": "VUID-vkResetFences-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkResetFences-fenceCount-arraylength",
"text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
},
{
"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>"
}
]
},
"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"
},
{
"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"
},
{
"vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
"text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
},
{
"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>"
}
]
},
"vkRegisterDeviceEventEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
]
},
"VkDeviceEventInfoEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
},
{
"vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
"text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
}
]
},
"vkRegisterDisplayEventEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
"text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
},
{
"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>"
}
]
},
"VkDisplayEventInfoEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
},
{
"vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
"text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
}
]
},
"vkImportFenceWin32HandleKHR": {
"(VK_KHR_external_fence_win32)": [
{
"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"
}
]
},
"VkImportFenceWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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>"
},
{
"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>"
}
]
},
"vkImportFenceFdKHR": {
"(VK_KHR_external_fence_fd)": [
{
"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"
},
{
"vuid": "VUID-vkImportFenceFdKHR-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
}
]
},
"VkImportFenceFdInfoKHR": {
"(VK_KHR_external_fence_fd)": [
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
},
{
"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"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
}
]
},
"vkImportFenceSciSyncFenceNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkImportFenceSciSyncFenceNV-sciSyncImport-05140",
"text": " <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncImport</code> and <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncFence</code>, or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncImport</code> and <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkImportFenceSciSyncFenceNV-fence-05141",
"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"
},
{
"vuid": "VUID-vkImportFenceSciSyncFenceNV-pImportFenceSciSyncInfo-05142",
"text": " <code>pImportFenceSciSyncInfo-&gt;handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_FENCE_BIT_NV</code>"
},
{
"vuid": "VUID-vkImportFenceSciSyncFenceNV-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkImportFenceSciSyncFenceNV-pImportFenceSciSyncInfo-parameter",
"text": " <code>pImportFenceSciSyncInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceSciSyncInfoNV\">VkImportFenceSciSyncInfoNV</a> structure"
}
]
},
"vkImportFenceSciSyncObjNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkImportFenceSciSyncObjNV-sciSyncImport-05143",
"text": " <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncImport</code> and <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncFence</code>, or <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncImport</code> and <a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncFence</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkImportFenceSciSyncObjNV-fence-05144",
"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"
},
{
"vuid": "VUID-vkImportFenceSciSyncObjNV-pImportFenceSciSyncInfo-05145",
"text": " <code>pImportFenceSciSyncInfo-&gt;handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV</code>"
},
{
"vuid": "VUID-vkImportFenceSciSyncObjNV-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkImportFenceSciSyncObjNV-pImportFenceSciSyncInfo-parameter",
"text": " <code>pImportFenceSciSyncInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceSciSyncInfoNV\">VkImportFenceSciSyncInfoNV</a> structure"
}
]
},
"VkImportFenceSciSyncInfoNV": {
"(VK_NV_external_sci_sync,VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkImportFenceSciSyncInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_SCI_SYNC_INFO_NV</code>"
},
{
"vuid": "VUID-VkImportFenceSciSyncInfoNV-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkImportFenceSciSyncInfoNV-fence-parameter",
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle"
},
{
"vuid": "VUID-VkImportFenceSciSyncInfoNV-handleType-parameter",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
},
{
"vuid": "VUID-VkImportFenceSciSyncInfoNV-handle-parameter",
"text": " <code>handle</code> <strong class=\"purple\">must</strong> be a pointer value"
}
]
},
"vkCreateSemaphore": {
"(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkCreateSemaphore-device-05068",
"text": " The number of {objectnameplural} currently allocated from <code>device</code> plus {objectcount} <strong class=\"purple\">must</strong> be less than or equal to the total number of {objectnameplural} requested via <a href=\"#VkDeviceObjectReservationCreateInfo\">VkDeviceObjectReservationCreateInfo</a>::pname:{objectnamecamelcase}RequestCount specified when <code>device</code> was created"
}
],
"core": [
{
"vuid": "VUID-vkCreateSemaphore-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkCreateSemaphore-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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"
}
]
},
"VkSemaphoreCreateInfo": {
"(VK_NV_external_sci_sync)": [
{
"vuid": "VUID-VkSemaphoreCreateInfo-pNext-05118",
"text": " If the <code>pNext</code> chain includes <a href=\"#VkExportSemaphoreSciSyncInfoNV\">VkExportSemaphoreSciSyncInfoNV</a>, it <strong class=\"purple\">must</strong> also include <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a> with a <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
}
],
"(VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkSemaphoreCreateInfo-pNext-05146",
"text": " If the <code>pNext</code> chain includes <a href=\"#VkSemaphoreSciSyncCreateInfoNV\">VkSemaphoreSciSyncCreateInfoNV</a>, it <strong class=\"purple\">must</strong> also include <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a> with a <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>"
}
],
"core": [
{
"vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
},
{
"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=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>, <a href=\"#VkExportSemaphoreSciSyncInfoNV\">VkExportSemaphoreSciSyncInfoNV</a>, <a href=\"#VkSemaphoreSciSyncCreateInfoNV\">VkSemaphoreSciSyncCreateInfoNV</a>, or <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>"
},
{
"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"
},
{
"vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
}
]
},
"VkSemaphoreTypeCreateInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"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>"
},
{
"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"
},
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO</code>"
},
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter",
"text": " <code>semaphoreType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> value"
}
],
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)+(VK_NV_external_sci_sync)": [
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-pNext-05119",
"text": " If the <code>pNext</code> chain includes <a href=\"#VkExportSemaphoreSciSyncInfoNV\">VkExportSemaphoreSciSyncInfoNV</a>, <code>initialValue</code> <strong class=\"purple\">must</strong> be zero."
}
]
},
"VkExportSemaphoreCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
{
"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>"
},
{
"vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
},
{
"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"
}
],
"(VK_VERSION_1_1,VK_KHR_external_semaphore)+(VK_NV_external_sci_sync)": [
{
"vuid": "VUID-VkExportSemaphoreCreateInfo-pNext-05120",
"text": " If the <code>pNext</code> chain includes a <code>VkExportSemaphoreSciSyncInfoNV</code> structure, <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncSemapore</code> and <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncExport</code> <strong class=\"purple\">must</strong> be enabled"
}
]
},
"VkExportSemaphoreWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"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>"
}
]
},
"VkSemaphoreGetWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"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"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
"text": " If <code>handleType</code> is defined as an NT handle, <code>vkGetSemaphoreWin32HandleKHR</code> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"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"
}
]
},
"vkGetSemaphoreFdKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
"text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value"
}
]
},
"VkSemaphoreGetFdInfoKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle"
},
{
"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>"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
}
],
"(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"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>"
},
{
"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 (if any) <strong class=\"purple\">must</strong> have also been submitted for execution"
}
]
},
"VkSemaphoreGetZirconHandleInfoFUCHSIA": {
"(VK_FUCHSIA_external_semaphore)": [
{
"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"
},
{
"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>"
},
{
"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>"
},
{
"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"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a Zircon event handle"
},
{
"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>"
}
]
},
"VkExportSemaphoreSciSyncInfoNV": {
"(VK_NV_external_sci_sync)": [
{
"vuid": "VUID-VkExportSemaphoreSciSyncInfoNV-pAttributes-05121",
"text": " <code>pAttributes</code> <strong class=\"purple\">must</strong> be a reconciled <code>NvSciSyncAttrList</code>"
},
{
"vuid": "VUID-VkExportSemaphoreSciSyncInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_SCI_SYNC_INFO_NV</code>"
}
]
},
"vkGetSemaphoreSciSyncObjNV": {
"(VK_NV_external_sci_sync)": [
{
"vuid": "VUID-vkGetSemaphoreSciSyncObjNV-sciSyncSemaphore-05147",
"text": " <a href=\"#VkPhysicalDeviceExternalSciSyncFeaturesNV\">VkPhysicalDeviceExternalSciSyncFeaturesNV</a>::<code>sciSyncSemaphore</code> <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-vkGetSemaphoreSciSyncObjNV-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"vuid": "VUID-vkGetSemaphoreSciSyncObjNV-pGetSciSyncInfo-parameter",
"text": " <code>pGetSciSyncInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetSciSyncInfoNV\">VkSemaphoreGetSciSyncInfoNV</a> structure"
},
{
"vuid": "VUID-vkGetSemaphoreSciSyncObjNV-pHandle-parameter",
"text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a pointer value"
}
]
},
"VkSemaphoreGetSciSyncInfoNV": {
"(VK_NV_external_sci_sync)": [
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-handleType-05122",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV</code>"
},
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-semaphore-05123",
"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>"
},
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-semaphore-05129",
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkExportSemaphoreSciSyncInfoNV\">VkExportSemaphoreSciSyncInfoNV</a> included <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>, or previously imported by <a href=\"#vkImportSemaphoreSciSyncObjNV\">vkImportSemaphoreSciSyncObjNV</a>"
},
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_SCI_SYNC_INFO_NV</code>"
},
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-pNext-pNext",
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-semaphore-parameter",
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle"
},
{
"vuid": "VUID-VkSemaphoreGetSciSyncInfoNV-handleType-parameter",
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
}
]
},
"VkSemaphoreSciSyncCreateInfoNV": {
"(VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-VkSemaphoreSciSyncCreateInfoNV-sciSyncSemaphore2-05148",
"text": " The <a href=\"#features-sciSyncSemaphore2\"><a href=\"#VkPhysicalDeviceExternalSciSync2FeaturesNV\">VkPhysicalDeviceExternalSciSync2FeaturesNV</a>::<code>sciSyncSemaphore2</code></a> feature <strong class=\"purple\">must</strong> be enabled"
},
{
"vuid": "VUID-VkSemaphoreSciSyncCreateInfoNV-sType-sType",
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SCI_SYNC_CREATE_INFO_NV</code>"
},
{
"vuid": "VUID-VkSemaphoreSciSyncCreateInfoNV-semaphorePool-parameter",
"text": " <code>semaphorePool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreSciSyncPoolNV\">VkSemaphoreSciSyncPoolNV</a> handle"
},
{
"vuid": "VUID-VkSemaphoreSciSyncCreateInfoNV-pFence-parameter",
"text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>NvSciSyncFence</code> value"
}
]
},
"vkDestroySemaphore": {
"!(VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkDestroySemaphore-semaphore-01137",
"text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
}
],
"(VK_NV_external_sci_sync2)": [
{
"vuid": "VUID-vkDestroySemaphore-semaphore-05149",
"text": " If <code>semaphore</code> was not created with <a href=\"#VkSemaphoreSciSyncCreateInfoNV\">VkSemaphoreSciSyncCreateInfoNV</a> present in the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>pNext</code> chain when it was created, all submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
}
],
"!(VKSC_VERSION_1_0)": [
{
"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"
},
{
"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>"
}
],
"core": [
{
"vuid": "VUID-vkDestroySemaphore-device-parameter",
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle"
},
{
"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"
},
{
"vuid": "VUID-vkDestroySemaphore-pAllocator-null",
"text": " <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
},
{
"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>"
}
]
},
"vkCreateSemaphoreSciSyncPoolNV": {
"(VK_NV_external_sci_sync2)+(VKSC_VERSION_1_0)": [
{
"vuid": "VUID-vkCreateSemaphoreSciSyncPoolNV-device-05150",
"text": " The number of semaphore pools currently allocated from <code>device</code> plus 1 <strong class=\"purple\">must</strong> be less than or equal to the total number of semaphore pools requested via <a href=\"#VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV\">VkDeviceSemaphoreSciSyncPoolReservationCreateInfoNV</a>::<code>semaphoreSciSyncPoolRequestCount</code> specified when <code>device</code> was created"
}
],