{ | |
"version info": { | |
"schema version": 2, | |
"api version": "1.1.101", | |
"comment": "from git branch: master commit: 55220784e078fe3dad80e9520ca1d264f9b12b72", | |
"date": "2019-02-20 00:56:19Z" | |
}, | |
"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 <code>VkInstance</code> 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 <code>VkDevice</code> 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 <code>VkInstanceCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateInstance-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateInstance-pInstance-parameter", | |
"text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkInstance</code> handle" | |
} | |
] | |
}, | |
"VkInstanceCreateInfo": { | |
"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=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>" | |
}, | |
{ | |
"vuid": "VUID-VkInstanceCreateInfo-sType-unique", | |
"text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" | |
}, | |
{ | |
"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 <code>VkApplicationInfo</code> 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" | |
} | |
] | |
}, | |
"VkValidationFlagsEXT": { | |
"(VK_EXT_validation_flags)": [ | |
{ | |
"vuid": "VUID-VkValidationFlagsEXT-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter", | |
"text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> valid <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength", | |
"text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
} | |
] | |
}, | |
"VkValidationFeaturesEXT": { | |
"(VK_EXT_validation_features)": [ | |
{ | |
"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": { | |
"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>" | |
}, | |
{ | |
"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" | |
} | |
] | |
}, | |
"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-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>" | |
}, | |
{ | |
"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 <code>VkInstance</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyInstance-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
} | |
] | |
}, | |
"vkEnumeratePhysicalDevices": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter", | |
"text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> 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> <code>VkPhysicalDevice</code> handles" | |
} | |
] | |
}, | |
"vkGetPhysicalDeviceProperties": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter", | |
"text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter", | |
"text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties</code> 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 <code>VkPhysicalDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter", | |
"text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties2</code> 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=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingPropertiesEXT\">VkPhysicalDeviceDescriptorIndexingPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverPropertiesKHR\">VkPhysicalDeviceDriverPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsPropertiesKHR\">VkPhysicalDeviceFloatControlsPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT\">VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, or <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>" | |
}, | |
{ | |
"vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique", | |
"text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" | |
} | |
] | |
}, | |
"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>" | |
} | |
] | |
}, | |
"VkPhysicalDeviceDriverPropertiesKHR": { | |
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_KHR_driver_properties)": [ | |
{ | |
"vuid": "VUID-VkPhysicalDeviceDriverPropertiesKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR</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 <code>VkPhysicalDevice</code> 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> <code>VkQueueFamilyProperties</code> 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 <code>VkPhysicalDevice</code> 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> <code>VkQueueFamilyProperties2</code> 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=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>" | |
} | |
] | |
}, | |
"VkQueueFamilyCheckpointPropertiesNV": { | |
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [ | |
{ | |
"vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>" | |
} | |
] | |
}, | |
"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 <code>VkInstance</code> 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> <code>VkPhysicalDeviceGroupProperties</code> 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 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 <code>VkPhysicalDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCreateDevice-pCreateInfo-parameter", | |
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateDevice-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateDevice-pDevice-parameter", | |
"text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDevice</code> handle" | |
} | |
] | |
}, | |
"VkDeviceCreateInfo": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372", | |
"text": "" | |
}, | |
{ | |
"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=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferAddressFeaturesEXT\">VkPhysicalDeviceBufferAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFloat16Int8FeaturesKHR\">VkPhysicalDeviceFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDrawParameterFeatures\">VkPhysicalDeviceShaderDrawParameterFeatures</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVariablePointerFeatures\">VkPhysicalDeviceVariablePointerFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, or <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>" | |
}, | |
{ | |
"vuid": "VUID-VkDeviceCreateInfo-sType-unique", | |
"text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" | |
}, | |
{ | |
"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 <code>VkDeviceQueueCreateInfo</code> 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 <code>VkPhysicalDeviceFeatures</code> structure" | |
}, | |
{ | |
"vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength", | |
"text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
} | |
], | |
"(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><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></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><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>" | |
} | |
] | |
}, | |
"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 <code>VkPhysicalDevice</code> handles" | |
} | |
] | |
}, | |
"VkDeviceMemoryOverallocationCreateInfoAMD": { | |
"(VK_AMD_memory_overallocation_behavior)": [ | |
{ | |
"vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>" | |
}, | |
{ | |
"vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter", | |
"text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value" | |
} | |
] | |
}, | |
"vkDestroyDevice": { | |
"core": [ | |
{ | |
"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>" | |
}, | |
{ | |
"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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyDevice-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
} | |
] | |
}, | |
"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>[<code>queueFamilyIndex</code>]" | |
}, | |
{ | |
"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-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>" | |
} | |
] | |
}, | |
"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 <code>VkDeviceQueueCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkGetDeviceQueue-queueIndex-00385", | |
"text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure" | |
}, | |
{ | |
"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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetDeviceQueue-pQueue-parameter", | |
"text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle" | |
} | |
] | |
}, | |
"vkGetDeviceQueue2": { | |
"(VK_VERSION_1_1)": [ | |
{ | |
"vuid": "VUID-vkGetDeviceQueue2-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter", | |
"text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceQueueInfo2</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter", | |
"text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> 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 <code>VkDeviceQueueCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843", | |
"text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <a href=\"#VkDeviceQueueCreateFlags\">VkDeviceQueueCreateFlags</a> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure" | |
}, | |
{ | |
"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" | |
}, | |
{ | |
"vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
} | |
] | |
}, | |
"vkCreateCommandPool": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937", | |
"text": " <code>pCreateInfo</code>::<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>." | |
}, | |
{ | |
"vuid": "VUID-vkCreateCommandPool-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter", | |
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandPoolCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateCommandPool-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter", | |
"text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkCommandPool</code> handle" | |
} | |
] | |
}, | |
"VkCommandPoolCreateInfo": { | |
"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>" | |
}, | |
{ | |
"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" | |
} | |
] | |
}, | |
"vkTrimCommandPool": { | |
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [ | |
{ | |
"vuid": "VUID-vkTrimCommandPool-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkTrimCommandPool-commandPool-parameter", | |
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkTrimCommandPool-flags-zerobitmask", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkTrimCommandPool-commandPool-parent", | |
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkResetCommandPool-commandPool-parameter", | |
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkResetCommandPool-flags-parameter", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkResetCommandPool-commandPool-parent", | |
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" | |
} | |
] | |
}, | |
"vkDestroyCommandPool": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkDestroyCommandPool-commandPool-00041", | |
"text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>." | |
}, | |
{ | |
"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>" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyCommandPool-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyCommandPool-commandPool-parameter", | |
"text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyCommandPool-commandPool-parent", | |
"text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" | |
} | |
] | |
}, | |
"vkAllocateCommandBuffers": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkAllocateCommandBuffers-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter", | |
"text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferAllocateInfo</code> 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</code>::commandBufferCount <code>VkCommandBuffer</code> handles" | |
} | |
] | |
}, | |
"VkCommandBufferAllocateInfo": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044", | |
"text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
}, | |
{ | |
"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 <code>VkCommandPool</code> 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 <code>VkCommandBuffer</code> 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" | |
} | |
] | |
}, | |
"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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter", | |
"text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> 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, the <code>queryFlags</code> member of the <code>pInheritanceInfo</code> member <code>pBeginInfo</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter", | |
"text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferBeginInfo</code> structure" | |
} | |
] | |
}, | |
"VkCommandBufferBeginInfo": { | |
"core": [ | |
{ | |
"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>" | |
}, | |
{ | |
"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>" | |
}, | |
{ | |
"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-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-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-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-pipelineStatistics-00058", | |
"text": " If the <a href=\"#features-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> or a pointer to a valid instance of <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a>" | |
}, | |
{ | |
"vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent", | |
"text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
] | |
}, | |
"VkCommandBufferInheritanceConditionalRenderingInfoEXT": { | |
"(VK_EXT_conditional_rendering)": [ | |
{ | |
"vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977", | |
"text": " If the <a href=\"#features-features-inheritedConditionalRendering\">inherited conditional rendering</a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" | |
}, | |
{ | |
"vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>" | |
} | |
] | |
}, | |
"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 <code>VkCommandBuffer</code> handle" | |
} | |
], | |
"(VK_EXT_conditional_rendering)": [ | |
{ | |
"vuid": "VUID-vkEndCommandBuffer-None-01978", | |
"text": " Conditional rendering must 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 <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>." | |
} | |
] | |
}, | |
"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 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 unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore." | |
}, | |
{ | |
"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." | |
}, | |
{ | |
"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</code>→<code>pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens before the acquire operation." | |
}, | |
{ | |
"vuid": "VUID-vkQueueSubmit-queue-parameter", | |
"text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> 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 <code>VkSubmitInfo</code> 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 <code>VkFence</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkQueueSubmit-commonparent", | |
"text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
] | |
}, | |
"VkSubmitInfo": { | |
"core": [ | |
{ | |
"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-00076", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"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=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>" | |
}, | |
{ | |
"vuid": "VUID-VkSubmitInfo-sType-unique", | |
"text": " Each <code>sType</code> member 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 <code>VkSemaphore</code> 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-pWaitDstStageMask-requiredbitmask", | |
"text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"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 <code>VkCommandBuffer</code> 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 <code>VkSemaphore</code> 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 <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
], | |
"(VK_NV_mesh_shader)": [ | |
{ | |
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
} | |
] | |
}, | |
"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." | |
}, | |
{ | |
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter", | |
"text": " If <code>waitSemaphoreValuesCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValuesCount</code> <code>uint64_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter", | |
"text": " If <code>signalSemaphoreValuesCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValuesCount</code> <code>uint64_t</code> values" | |
} | |
] | |
}, | |
"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 <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>::<code>handleType</code> to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>." | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter", | |
"text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter", | |
"text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter", | |
"text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter", | |
"text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter", | |
"text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent", | |
"text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
] | |
}, | |
"VkWin32KeyedMutexAcquireReleaseInfoNV": { | |
"(VK_NV_win32_keyed_mutex)": [ | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter", | |
"text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter", | |
"text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter", | |
"text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeoutMilliseconds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter", | |
"text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter", | |
"text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent", | |
"text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
] | |
}, | |
"VkProtectedSubmitInfo": { | |
"(VK_VERSION_1_1)": [ | |
{ | |
"vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816", | |
"text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>." | |
}, | |
{ | |
"vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817", | |
"text": " If <code>protectedSubmit</code> is <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer." | |
}, | |
{ | |
"vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818", | |
"text": " If <code>protectedSubmit</code> is <code>VK_FALSE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer." | |
}, | |
{ | |
"vuid": "VUID-VkProtectedSubmitInfo-pNext-01819", | |
"text": " If the <code>VkSubmitInfo</code>::<code>pNext</code> chain does not include a <code>VkProtectedSubmitInfo</code> structure, then each element of the command buffer of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer." | |
}, | |
{ | |
"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" | |
} | |
] | |
}, | |
"vkCmdExecuteCommands": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_PRIMARY</code>" | |
}, | |
{ | |
"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-00090", | |
"text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, and it was recorded into any other primary command buffer, that primary command buffer <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" | |
}, | |
{ | |
"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-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-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-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</code>::<code>pInheritanceInfo</code>::<code>renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass." | |
}, | |
{ | |
"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 <code>VkCommandBufferInheritanceInfo</code>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance" | |
}, | |
{ | |
"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-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 <code>VkCommandBuffer</code> 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 <code>VkCommandBuffer</code> 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 <code>VkDevice</code>" | |
} | |
], | |
"(VK_VERSION_1_1)": [ | |
{ | |
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820", | |
"text": " If <code>commandBuffer</code> is a protected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer." | |
}, | |
{ | |
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821", | |
"text": " If <code>commandBuffer</code> is an unprotected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer." | |
} | |
], | |
"(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" | |
} | |
] | |
}, | |
"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 <code>VkCommandBuffer</code> 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": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCreateFence-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCreateFence-pCreateInfo-parameter", | |
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateFence-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateFence-pFence-parameter", | |
"text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> 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=\"#VkExportFenceWin32HandleInfoKHR\">VkExportFenceWin32HandleInfoKHR</a>" | |
}, | |
{ | |
"vuid": "VUID-VkFenceCreateInfo-sType-unique", | |
"text": " Each <code>sType</code> member 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> must 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" | |
} | |
] | |
}, | |
"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>, <code>VkExportFenceWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>." | |
}, | |
{ | |
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter", | |
"text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" | |
} | |
] | |
}, | |
"vkGetFenceWin32HandleKHR": { | |
"(VK_KHR_external_fence_win32)": [ | |
{ | |
"vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter", | |
"text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetWin32HandleInfoKHR</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter", | |
"text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" | |
} | |
] | |
}, | |
"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>’s current payload was created." | |
}, | |
{ | |
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449", | |
"text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetFenceWin32HandleKHR\">vkGetFenceWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>." | |
}, | |
{ | |
"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’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." | |
}, | |
{ | |
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter", | |
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter", | |
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" | |
} | |
] | |
}, | |
"vkGetFenceFdKHR": { | |
"(VK_KHR_external_fence_fd)": [ | |
{ | |
"vuid": "VUID-vkGetFenceFdKHR-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter", | |
"text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetFdInfoKHR</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkGetFenceFdKHR-pFd-parameter", | |
"text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <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>’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’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 <code>VkFence</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkFenceGetFdInfoKHR-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-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>" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyFence-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> 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 <code>VkFence</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyFence-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"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>" | |
} | |
] | |
}, | |
"vkGetFenceStatus": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkGetFenceStatus-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetFenceStatus-fence-parameter", | |
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> 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 <code>VkDevice</code> 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 <code>VkFence</code> 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 <code>VkDevice</code> 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 <code>VkFence</code> 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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter", | |
"text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceEventInfoEXT</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter", | |
"text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> 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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter", | |
"text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter", | |
"text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayEventInfoEXT</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter", | |
"text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle" | |
} | |
] | |
}, | |
"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-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter", | |
"text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceWin32HandleInfoKHR</code> structure" | |
} | |
] | |
}, | |
"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 VkImportFenceWin32HandleInfoKHR</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>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461", | |
"text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462", | |
"text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must 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>." | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter", | |
"text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter", | |
"text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" | |
} | |
] | |
}, | |
"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 <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter", | |
"text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceFdInfoKHR</code> 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 VkImportFenceFdInfoKHR</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 <code>VkFence</code> 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" | |
} | |
] | |
}, | |
"vkCreateSemaphore": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCreateSemaphore-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter", | |
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateSemaphore-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter", | |
"text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSemaphore</code> handle" | |
} | |
] | |
}, | |
"VkSemaphoreCreateInfo": { | |
"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> or <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>" | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreCreateInfo-sType-unique", | |
"text": " Each <code>sType</code> member 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>" | |
} | |
] | |
}, | |
"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" | |
} | |
] | |
}, | |
"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 in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>." | |
}, | |
{ | |
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter", | |
"text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" | |
} | |
] | |
}, | |
"vkGetSemaphoreWin32HandleKHR": { | |
"(VK_KHR_external_semaphore_win32)": [ | |
{ | |
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter", | |
"text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetWin32HandleInfoKHR</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter", | |
"text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" | |
} | |
] | |
}, | |
"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>’s current payload was created." | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127", | |
"text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetSemaphoreWin32HandleKHR\">vkGetSemaphoreWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>." | |
}, | |
{ | |
"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’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." | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter", | |
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter", | |
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" | |
} | |
] | |
}, | |
"vkGetSemaphoreFdKHR": { | |
"(VK_KHR_external_semaphore_fd)": [ | |
{ | |
"vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter", | |
"text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetFdInfoKHR</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter", | |
"text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <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>’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’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 <code>VkSemaphore</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter", | |
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" | |
} | |
] | |
}, | |
"vkDestroySemaphore": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkDestroySemaphore-semaphore-01137", | |
"text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution" | |
}, | |
{ | |
"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>" | |
}, | |
{ | |
"vuid": "VUID-vkDestroySemaphore-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> 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 <code>VkSemaphore</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroySemaphore-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"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>" | |
} | |
] | |
}, | |
"vkImportSemaphoreWin32HandleKHR": { | |
"(VK_KHR_external_semaphore_win32)": [ | |
{ | |
"vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter", | |
"text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreWin32HandleInfoKHR</code> structure" | |
} | |
] | |
}, | |
"VkImportSemaphoreWin32HandleInfoKHR": { | |
"(VK_KHR_external_semaphore_win32)": [ | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140", | |
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR</a> table." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466", | |
"text": " If <code>handleType</code> is not <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467", | |
"text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468", | |
"text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469", | |
"text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542", | |
"text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543", | |
"text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter", | |
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter", | |
"text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" | |
} | |
] | |
}, | |
"vkImportSemaphoreFdKHR": { | |
"(VK_KHR_external_semaphore_fd)": [ | |
{ | |
"vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142", | |
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" | |
}, | |
{ | |
"vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter", | |
"text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreFdInfoKHR</code> structure" | |
} | |
] | |
}, | |
"VkImportSemaphoreFdInfoKHR": { | |
"(VK_KHR_external_semaphore_fd)": [ | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143", | |
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by VkImportSemaphoreFdInfoKHR</a> table." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544", | |
"text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>." | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter", | |
"text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter", | |
"text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" | |
} | |
] | |
}, | |
"vkCreateEvent": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCreateEvent-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCreateEvent-pCreateInfo-parameter", | |
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkEventCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateEvent-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateEvent-pEvent-parameter", | |
"text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkEvent</code> handle" | |
} | |
] | |
}, | |
"VkEventCreateInfo": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkEventCreateInfo-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>" | |
}, | |
{ | |
"vuid": "VUID-VkEventCreateInfo-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkEventCreateInfo-flags-zerobitmask", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" | |
} | |
] | |
}, | |
"vkDestroyEvent": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkDestroyEvent-event-01145", | |
"text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyEvent-event-01146", | |
"text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyEvent-event-01147", | |
"text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyEvent-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyEvent-event-parameter", | |
"text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyEvent-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkDestroyEvent-event-parent", | |
"text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" | |
} | |
] | |
}, | |
"vkGetEventStatus": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkGetEventStatus-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetEventStatus-event-parameter", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetEventStatus-event-parent", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" | |
} | |
] | |
}, | |
"vkSetEvent": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkSetEvent-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkSetEvent-event-parameter", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkSetEvent-event-parent", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" | |
} | |
] | |
}, | |
"vkResetEvent": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkResetEvent-event-01148", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing" | |
}, | |
{ | |
"vuid": "VUID-vkResetEvent-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkResetEvent-event-parameter", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkResetEvent-event-parent", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" | |
} | |
] | |
}, | |
"vkCmdSetEvent": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-01149", | |
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-01150", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-01151", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-event-parameter", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-parameter", | |
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask", | |
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-commandBuffer-recording", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool", | |
"text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-renderpass", | |
"text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-commonparent", | |
"text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_device_group)": [ | |
{ | |
"vuid": "VUID-vkCmdSetEvent-commandBuffer-01152", | |
"text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device." | |
} | |
], | |
"(VK_NV_mesh_shader)": [ | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-02107", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdSetEvent-stageMask-02108", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
} | |
] | |
}, | |
"vkCmdResetEvent": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-01153", | |
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-01154", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-01155", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-event-01156", | |
"text": " When this command executes, <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-event-parameter", | |
"text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-parameter", | |
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask", | |
"text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-commandBuffer-recording", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool", | |
"text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-renderpass", | |
"text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-commonparent", | |
"text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_device_group)": [ | |
{ | |
"vuid": "VUID-vkCmdResetEvent-commandBuffer-01157", | |
"text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device." | |
} | |
], | |
"(VK_NV_mesh_shader)": [ | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-02109", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdResetEvent-stageMask-02110", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
} | |
] | |
}, | |
"vkCmdWaitEvents": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158", | |
"text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be the bitwise OR of the <code>stageMask</code> parameter used in previous calls to <code>vkCmdSetEvent</code> with any of the members of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the members of <code>pEvents</code> was set using <code>vkSetEvent</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pEvents-01163", | |
"text": " If <code>pEvents</code> includes one or more events that will be signaled by <code>vkSetEvent</code> after <code>commandBuffer</code> has been submitted to a queue, then <code>vkCmdWaitEvents</code> <strong class=\"purple\">must</strong> not be called inside a render pass instance" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164", | |
"text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>." | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165", | |
"text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166", | |
"text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pEvents-parameter", | |
"text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <code>VkEvent</code> handles" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter", | |
"text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask", | |
"text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter", | |
"text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask", | |
"text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter", | |
"text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter", | |
"text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter", | |
"text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool", | |
"text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength", | |
"text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-commonparent", | |
"text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_device_group)": [ | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167", | |
"text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device." | |
} | |
], | |
"(VK_NV_mesh_shader)": [ | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-02111", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-02112", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-02113", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-02114", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
} | |
] | |
}, | |
"vkCmdPipelineBarrier": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <code>VkSubpassDependency</code> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, and for which <code>srcStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcStageMask</code>, <code>dstStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstStageMask</code>, <code>dependencyFlags</code> is equal to <code>VkSubpassDependency</code>::<code>dependencyFlags</code>, <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcAccessMask</code>, and <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstAccessMask</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>bufferMemoryBarrierCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of an element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183", | |
"text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>." | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184", | |
"text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185", | |
"text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>." | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter", | |
"text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask", | |
"text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter", | |
"text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask", | |
"text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter", | |
"text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter", | |
"text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter", | |
"text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter", | |
"text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording", | |
"text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool", | |
"text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" | |
} | |
], | |
"(VK_KHR_depth_stencil_resolve)": [ | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-image-02635", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02636", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with, that refers to the same <code>image</code>" | |
} | |
], | |
"!(VK_KHR_depth_stencil_resolve)": [ | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-image-02637", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02638", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with, that refers to the same <code>image</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_multiview)": [ | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186", | |
"text": " If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" | |
} | |
], | |
"(VK_NV_mesh_shader)": [ | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02115", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02116", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02117", | |
"text": " If the <a href=\"#features-features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" | |
}, | |
{ | |
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02118", | |
"text": " If the <a href=\"#features-features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" | |
} | |
] | |
}, | |
"VkMemoryBarrier": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkMemoryBarrier-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>" | |
}, | |
{ | |
"vuid": "VUID-VkMemoryBarrier-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter", | |
"text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter", | |
"text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" | |
} | |
] | |
}, | |
"VkBufferMemoryBarrier": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-offset-01187", | |
"text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-size-01188", | |
"text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-size-01189", | |
"text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to than the size of <code>buffer</code> minus <code>offset</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01196", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01931", | |
"text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter", | |
"text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter", | |
"text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter", | |
"text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle" | |
} | |
], | |
"!(VK_VERSION_1_1,VK_KHR_external_memory)": [ | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01190", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01192", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_external_memory)": [ | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01191", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01763", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01193", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01764", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." | |
}, | |
{ | |
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01765", | |
"text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." | |
} | |
] | |
}, | |
"VkImageMemoryBarrier": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197", | |
"text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-newLayout-01198", | |
"text": " <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01205", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486", | |
"text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724", | |
"text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488", | |
"text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725", | |
"text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01207", | |
"text": " If <code>image</code> has a depth/stencil format with both depth and stencil components, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01932", | |
"text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-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=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter", | |
"text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter", | |
"text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter", | |
"text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter", | |
"text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-parameter", | |
"text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter", | |
"text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure" | |
} | |
], | |
"!(VK_VERSION_1_1,VK_KHR_external_memory)": [ | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01199", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01200", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)." | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_external_memory)": [ | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01381", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01766", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01201", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>." | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01767", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01768", | |
"text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>." | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01671", | |
"text": " If <code>image</code> has a single-plane color format or is not <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01672", | |
"text": " If <code>image</code> has a multi-planar format and the image is <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either at least one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>; or <strong class=\"purple\">must</strong> include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-image-01673", | |
"text": " If <code>image</code> has a multi-planar format with only two planes, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [ | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" | |
}, | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" | |
} | |
], | |
"(VK_NV_shading_rate_image)": [ | |
{ | |
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088", | |
"text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code> set" | |
} | |
] | |
}, | |
"vkQueueWaitIdle": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkQueueWaitIdle-queue-parameter", | |
"text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle" | |
} | |
] | |
}, | |
"vkDeviceWaitIdle": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkDeviceWaitIdle-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
} | |
] | |
}, | |
"vkGetCalibratedTimestampsEXT": { | |
"(VK_EXT_calibrated_timestamps)": [ | |
{ | |
"vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter", | |
"text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <code>VkCalibratedTimestampInfoEXT</code> structures" | |
}, | |
{ | |
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter", | |
"text": " <code>pTimestamps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> <code>uint64_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter", | |
"text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" | |
}, | |
{ | |
"vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength", | |
"text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
} | |
] | |
}, | |
"VkCalibratedTimestampInfoEXT": { | |
"(VK_EXT_calibrated_timestamps)": [ | |
{ | |
"vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354", | |
"text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values returned by <a href=\"#vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\">vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</a>" | |
}, | |
{ | |
"vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext", | |
"text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter", | |
"text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value" | |
} | |
] | |
}, | |
"vkCreateRenderPass": { | |
"core": [ | |
{ | |
"vuid": "VUID-vkCreateRenderPass-device-parameter", | |
"text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle" | |
}, | |
{ | |
"vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter", | |
"text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateRenderPass-pAllocator-parameter", | |
"text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure" | |
}, | |
{ | |
"vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter", | |
"text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle" | |
} | |
] | |
}, | |
"VkRenderPassCreateInfo": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-attachment-00834", | |
"text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836", | |
"text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>." | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511", | |
"text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>." | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837", | |
"text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838", | |
"text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517", | |
"text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518", | |
"text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext", | |
"text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>, <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, or <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-sType-unique", | |
"text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter", | |
"text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter", | |
"text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter", | |
"text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength", | |
"text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [ | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566", | |
"text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>." | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567", | |
"text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>." | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01926", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01927", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01963", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_multiview)": [ | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01928", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01929", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01930", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02512", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that doesn’t include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, the corresponding element of the <code>pViewOffsets</code> member of that <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> instance <strong class=\"purple\">must</strong> be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02513", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02514", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02515", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02516", | |
"text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>" | |
} | |
] | |
}, | |
"VkRenderPassMultiviewCreateInfo": { | |
"(VK_VERSION_1_1,VK_KHR_multiview)": [ | |
{ | |
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841", | |
"text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter", | |
"text": " If <code>subpassCount</code> is not <code>0</code>, <code>pViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> <code>uint32_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter", | |
"text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pViewOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> <code>int32_t</code> values" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter", | |
"text": " If <code>correlationMaskCount</code> is not <code>0</code>, <code>pCorrelationMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlationMaskCount</code> <code>uint32_t</code> values" | |
} | |
] | |
}, | |
"VkRenderPassFragmentDensityMapCreateInfoEXT": { | |
"(VK_EXT_fragment_density_map)": [ | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547", | |
"text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be less than <code>VkRenderPassCreateInfo</code>::<code>attachmentCount</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548", | |
"text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> not be an element of <code>VkSubpassDescription</code>::<code>pInputAttachments</code>, <code>VkSubpassDescription</code>::<code>pColorAttachments</code>, <code>VkSubpassDescription</code>::<code>pResolveAttachments</code>, <code>VkSubpassDescription</code>::<code>pDepthStencilAttachment</code>, or <code>VkSubpassDescription</code>::<code>pPreserveAttachments</code> for any subpass" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549", | |
"text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550", | |
"text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_LOAD</code> or <code>VK_ATTACHMENT_LOAD_OP_DONT_CARE</code>." | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551", | |
"text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>storeOp</code> equal to <code>VK_ATTACHMENT_STORE_OP_DONT_CARE</code>." | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter", | |
"text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <code>VkAttachmentReference</code> structure" | |
} | |
] | |
}, | |
"VkAttachmentDescription": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkAttachmentDescription-finalLayout-00843", | |
"text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-flags-parameter", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-format-parameter", | |
"text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-samples-parameter", | |
"text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-loadOp-parameter", | |
"text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-storeOp-parameter", | |
"text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter", | |
"text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter", | |
"text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-initialLayout-parameter", | |
"text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentDescription-finalLayout-parameter", | |
"text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" | |
} | |
] | |
}, | |
"VkRenderPassInputAttachmentAspectCreateInfo": { | |
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [ | |
{ | |
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType", | |
"text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter", | |
"text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <code>VkInputAttachmentAspectReference</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength", | |
"text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" | |
} | |
] | |
}, | |
"VkInputAttachmentAspectReference": { | |
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [ | |
{ | |
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964", | |
"text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter", | |
"text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask", | |
"text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" | |
} | |
], | |
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [ | |
{ | |
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250", | |
"text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>." | |
} | |
] | |
}, | |
"VkSubpassDescription": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844", | |
"text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845", | |
"text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-loadOp-00846", | |
"text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847", | |
"text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848", | |
"text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849", | |
"text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850", | |
"text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pColorAttachments-01417", | |
"text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pInputAttachments-02647", | |
"text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>." | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pColorAttachments-02648", | |
"text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649", | |
"text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650", | |
"text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418", | |
"text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-attachment-00853", | |
"text": " The <code>attachment</code> member of each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854", | |
"text": " Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-layout-02519", | |
"text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-flags-parameter", | |
"text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter", | |
"text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter", | |
"text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter", | |
"text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter", | |
"text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter", | |
"text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference</code> structure" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter", | |
"text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values" | |
} | |
], | |
"(VK_AMD_mixed_attachment_samples)": [ | |
{ | |
"vuid": "VUID-VkSubpassDescription-pColorAttachments-01506", | |
"text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>" | |
} | |
], | |
"(VK_NVX_multiview_per_view_attributes)": [ | |
{ | |
"vuid": "VUID-VkSubpassDescription-flags-00856", | |
"text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>." | |
} | |
] | |
}, | |
"VkAttachmentReference": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkAttachmentReference-layout-00857", | |
"text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" | |
}, | |
{ | |
"vuid": "VUID-VkAttachmentReference-layout-parameter", | |
"text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" | |
} | |
] | |
}, | |
"VkSubpassDependency": { | |
"core": [ | |
{ | |
"vuid": "VUID-VkSubpassDependency-srcSubpass-00858", | |
"text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDependency-dstSubpass-00859", | |
"text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDependency-srcStageMask-00860", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDependency-dstStageMask-00861", | |
"text": " If the <a href=\"#features-features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDependency-srcStageMask-00862", | |
"text": " If the <a href=\"#features-features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" | |
}, | |
{ | |
"vuid": "VUID-VkSubpassDependency-dstStageMask-00863", | |