{
"version info": {
"schema version": 2,
"api version": "1.1.113",
"comment": "from git branch: github-master commit: 8897c572ce5473486bb92e3ab9574a5f130794c3",
"date": "2019-06-30 06:14:36Z"
},
"validation": {
"vkGetInstanceProcAddr": {
"core": [
{
"vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
"text": " If instance
is not NULL
, instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
}
]
},
"vkGetDeviceProcAddr": {
"core": [
{
"vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
}
]
},
"vkEnumerateInstanceVersion": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
"text": " pApiVersion
must be a valid pointer to a uint32_t
value"
}
]
},
"vkCreateInstance": {
"core": [
{
"vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
"text": " All required extensions for each extension in the VkInstanceCreateInfo::ppEnabledExtensionNames
list must also be present in that list."
},
{
"vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkInstanceCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateInstance-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateInstance-pInstance-parameter",
"text": " pInstance
must be a valid pointer to a VkInstance
handle"
}
]
},
"VkInstanceCreateInfo": {
"core": [
{
"vuid": "VUID-VkInstanceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
"
},
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDebugReportCallbackCreateInfoEXT, VkDebugUtilsMessengerCreateInfoEXT, VkValidationFeaturesEXT, or VkValidationFlagsEXT"
},
{
"vuid": "VUID-VkInstanceCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
"text": " If pApplicationInfo
is not NULL
, pApplicationInfo
must be a valid pointer to a valid VkApplicationInfo
structure"
},
{
"vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
"text": " If enabledLayerCount
is not 0
, ppEnabledLayerNames
must be a valid pointer to an array of enabledLayerCount
null-terminated UTF-8 strings"
},
{
"vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
"text": " If enabledExtensionCount
is not 0
, ppEnabledExtensionNames
must be a valid pointer to an array of enabledExtensionCount
null-terminated UTF-8 strings"
}
]
},
"VkValidationFlagsEXT": {
"(VK_EXT_validation_flags)": [
{
"vuid": "VUID-VkValidationFlagsEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
"
},
{
"vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
"text": " pDisabledValidationChecks
must be a valid pointer to an array of disabledValidationCheckCount
valid VkValidationCheckEXT values"
},
{
"vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
"text": " disabledValidationCheckCount
must be greater than 0
"
}
]
},
"VkValidationFeaturesEXT": {
"(VK_EXT_validation_features)": [
{
"vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT
"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
"text": " If enabledValidationFeatureCount
is not 0
, pEnabledValidationFeatures
must be a valid pointer to an array of enabledValidationFeatureCount
valid VkValidationFeatureEnableEXT values"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
"text": " If disabledValidationFeatureCount
is not 0
, pDisabledValidationFeatures
must be a valid pointer to an array of disabledValidationFeatureCount
valid VkValidationFeatureDisableEXT values"
}
]
},
"VkApplicationInfo": {
"core": [
{
"vuid": "VUID-VkApplicationInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_APPLICATION_INFO
"
},
{
"vuid": "VUID-VkApplicationInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
"text": " If pApplicationName
is not NULL
, pApplicationName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
"text": " If pEngineName
is not NULL
, pEngineName
must be a null-terminated UTF-8 string"
}
]
},
"vkDestroyInstance": {
"core": [
{
"vuid": "VUID-vkDestroyInstance-instance-00629",
"text": " All child objects created using instance
must have been destroyed prior to destroying instance
"
},
{
"vuid": "VUID-vkDestroyInstance-instance-00630",
"text": " If VkAllocationCallbacks
were provided when instance
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyInstance-instance-00631",
"text": " If no VkAllocationCallbacks
were provided when instance
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyInstance-instance-parameter",
"text": " If instance
is not NULL
, instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
}
]
},
"vkEnumeratePhysicalDevices": {
"core": [
{
"vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
"text": " pPhysicalDeviceCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
"text": " If the value referenced by pPhysicalDeviceCount
is not 0
, and pPhysicalDevices
is not NULL
, pPhysicalDevices
must be a valid pointer to an array of pPhysicalDeviceCount
VkPhysicalDevice
handles"
}
]
},
"vkGetPhysicalDeviceProperties": {
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkPhysicalDeviceProperties
structure"
}
]
},
"vkGetPhysicalDeviceProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkPhysicalDeviceProperties2
structure"
}
]
},
"VkPhysicalDeviceProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
"
},
{
"vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceDepthStencilResolvePropertiesKHR, VkPhysicalDeviceDescriptorIndexingPropertiesEXT, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDriverPropertiesKHR, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsPropertiesKHR, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceInlineUniformBlockPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePointClippingProperties, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, or VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
"text": " Each sType
member in the pNext
chain must 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": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
"
}
]
},
"VkPhysicalDeviceDriverPropertiesKHR": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_KHR_driver_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceDriverPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDevicePCIBusInfoPropertiesEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
{
"vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
"
}
]
},
"vkGetPhysicalDeviceQueueFamilyProperties": {
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
"text": " pQueueFamilyPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
"text": " If the value referenced by pQueueFamilyPropertyCount
is not 0
, and pQueueFamilyProperties
is not NULL
, pQueueFamilyProperties
must be a valid pointer to an array of pQueueFamilyPropertyCount
VkQueueFamilyProperties
structures"
}
]
},
"vkGetPhysicalDeviceQueueFamilyProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
"text": " pQueueFamilyPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
"text": " If the value referenced by pQueueFamilyPropertyCount
is not 0
, and pQueueFamilyProperties
is not NULL
, pQueueFamilyProperties
must be a valid pointer to an array of pQueueFamilyPropertyCount
VkQueueFamilyProperties2
structures"
}
]
},
"VkQueueFamilyProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2
"
},
{
"vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkQueueFamilyCheckpointPropertiesNV"
}
]
},
"VkQueueFamilyCheckpointPropertiesNV": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
"
}
]
},
"vkEnumeratePhysicalDeviceGroups": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
"text": " pPhysicalDeviceGroupCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
"text": " If the value referenced by pPhysicalDeviceGroupCount
is not 0
, and pPhysicalDeviceGroupProperties
is not NULL
, pPhysicalDeviceGroupProperties
must be a valid pointer to an array of pPhysicalDeviceGroupCount
VkPhysicalDeviceGroupProperties
structures"
}
]
},
"VkPhysicalDeviceGroupProperties": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
"
},
{
"vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCreateDevice": {
"core": [
{
"vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
"text": " All required extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames
list must also be present in that list."
},
{
"vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDeviceCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateDevice-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDevice-pDevice-parameter",
"text": " pDevice
must be a valid pointer to a VkDevice
handle"
}
]
},
"VkDeviceCreateInfo": {
"core": [
{
"vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
"text": ""
},
{
"vuid": "VUID-VkDeviceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
"
},
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeaturesKHR, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeaturesEXT, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFloat16Int8FeaturesKHR, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceHostQueryResetFeaturesEXT, VkPhysicalDeviceInlineUniformBlockFeaturesEXT, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64FeaturesKHR, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerFunctions2INTEL, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVulkanMemoryModelFeaturesKHR, or VkPhysicalDeviceYcbcrImageArraysFeaturesEXT"
},
{
"vuid": "VUID-VkDeviceCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
"text": " pQueueCreateInfos
must be a valid pointer to an array of queueCreateInfoCount
valid VkDeviceQueueCreateInfo
structures"
},
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
"text": " If enabledLayerCount
is not 0
, ppEnabledLayerNames
must be a valid pointer to an array of enabledLayerCount
null-terminated UTF-8 strings"
},
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
"text": " If enabledExtensionCount
is not 0
, ppEnabledExtensionNames
must be a valid pointer to an array of enabledExtensionCount
null-terminated UTF-8 strings"
},
{
"vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
"text": " If pEnabledFeatures
is not NULL
, pEnabledFeatures
must be a valid pointer to a valid VkPhysicalDeviceFeatures
structure"
},
{
"vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
"text": " queueCreateInfoCount
must be greater than 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
"text": " If the pNext
chain includes a VkPhysicalDeviceFeatures2 structure, then pEnabledFeatures
must be NULL
"
}
],
"(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
"text": " ppEnabledExtensionNames
must not contain VK_AMD_negative_viewport_height
"
}
],
"(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
"text": " ppEnabledExtensionNames
must not contain both VK_KHR_maintenance1
and VK_AMD_negative_viewport_height
"
}
]
},
"VkDeviceGroupDeviceCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
"text": " Each element of pPhysicalDevices
must be unique"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
"text": " All elements of pPhysicalDevices
must be in the same device group as enumerated by vkEnumeratePhysicalDeviceGroups"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
"text": " If physicalDeviceCount
is not 0
, the physicalDevice
parameter of vkCreateDevice must be an element of pPhysicalDevices
."
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
"text": " If physicalDeviceCount
is not 0
, pPhysicalDevices
must be a valid pointer to an array of physicalDeviceCount
valid VkPhysicalDevice
handles"
}
]
},
"VkDeviceMemoryOverallocationCreateInfoAMD": {
"(VK_AMD_memory_overallocation_behavior)": [
{
"vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
"
},
{
"vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
"text": " overallocationBehavior
must be a valid VkMemoryOverallocationBehaviorAMD value"
}
]
},
"vkDestroyDevice": {
"core": [
{
"vuid": "VUID-vkDestroyDevice-device-00378",
"text": " All child objects created on device
must have been destroyed prior to destroying device
"
},
{
"vuid": "VUID-vkDestroyDevice-device-00379",
"text": " If VkAllocationCallbacks
were provided when device
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDevice-device-00380",
"text": " If no VkAllocationCallbacks
were provided when device
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDevice-device-parameter",
"text": " If device
is not NULL
, device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
}
]
},
"VkDeviceQueueCreateInfo": {
"core": [
{
"vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
"text": " queueCount
must be less than or equal to the queueCount
member of the VkQueueFamilyProperties
structure, as returned by vkGetPhysicalDeviceQueueFamilyProperties
in the pQueueFamilyProperties
[queueFamilyIndex
]"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
"text": " Each element of pQueuePriorities
must be between 0.0
and 1.0
inclusive"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDeviceQueueGlobalPriorityCreateInfoEXT"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkDeviceQueueCreateFlagBits values"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
"text": " pQueuePriorities
must be a valid pointer to an array of queueCount
float
values"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
"text": " queueCount
must be greater than 0
"
}
]
},
"VkDeviceQueueGlobalPriorityCreateInfoEXT": {
"(VK_EXT_global_priority)": [
{
"vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
"text": " globalPriority
must be a valid VkQueueGlobalPriorityEXT value"
}
]
},
"vkGetDeviceQueue": {
"core": [
{
"vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
"text": " queueFamilyIndex
must be one of the queue family indices specified when device
was created, via the VkDeviceQueueCreateInfo
structure"
},
{
"vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
"text": " queueIndex
must be less than the number of queues created for the specified queue family index when device
was created, via the queueCount
member of the VkDeviceQueueCreateInfo
structure"
},
{
"vuid": "VUID-vkGetDeviceQueue-flags-01841",
"text": " VkDeviceQueueCreateInfo::flags
must have been set to zero when device
was created"
},
{
"vuid": "VUID-vkGetDeviceQueue-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
"text": " pQueue
must be a valid pointer to a VkQueue
handle"
}
]
},
"vkGetDeviceQueue2": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkGetDeviceQueue2-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
"text": " pQueueInfo
must be a valid pointer to a valid VkDeviceQueueInfo2
structure"
},
{
"vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
"text": " pQueue
must be a valid pointer to a VkQueue
handle"
}
]
},
"VkDeviceQueueInfo2": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
"text": " queueFamilyIndex
must be one of the queue family indices specified when device
was created, via the VkDeviceQueueCreateInfo
structure"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
"text": " queueIndex
must be less than the number of queues created for the specified queue family index and VkDeviceQueueCreateFlags member flags
equal to this flags
value when device
was created, via the queueCount
member of the VkDeviceQueueCreateInfo
structure"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2
"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
"text": " flags
must be a valid combination of VkDeviceQueueCreateFlagBits values"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask",
"text": " flags
must not be 0
"
}
]
},
"vkCreateCommandPool": {
"core": [
{
"vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
"text": " pCreateInfo
::queueFamilyIndex
must be the index of a queue family available in the logical device device
."
},
{
"vuid": "VUID-vkCreateCommandPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkCommandPoolCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
"text": " pCommandPool
must be a valid pointer to a VkCommandPool
handle"
}
]
},
"VkCommandPoolCreateInfo": {
"core": [
{
"vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
"
},
{
"vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkCommandPoolCreateFlagBits values"
}
]
},
"vkTrimCommandPool": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkTrimCommandPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool
handle"
},
{
"vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-vkTrimCommandPool-commandPool-parent",
"text": " commandPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkResetCommandPool": {
"core": [
{
"vuid": "VUID-vkResetCommandPool-commandPool-00040",
"text": " All VkCommandBuffer
objects allocated from commandPool
must not be in the pending state"
},
{
"vuid": "VUID-vkResetCommandPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkResetCommandPool-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool
handle"
},
{
"vuid": "VUID-vkResetCommandPool-flags-parameter",
"text": " flags
must be a valid combination of VkCommandPoolResetFlagBits values"
},
{
"vuid": "VUID-vkResetCommandPool-commandPool-parent",
"text": " commandPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyCommandPool": {
"core": [
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
"text": " All VkCommandBuffer
objects allocated from commandPool
must not be in the pending state."
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
"text": " If VkAllocationCallbacks
were provided when commandPool
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
"text": " If no VkAllocationCallbacks
were provided when commandPool
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyCommandPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
"text": " If commandPool
is not VK_NULL_HANDLE, commandPool
must be a valid VkCommandPool
handle"
},
{
"vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
"text": " If commandPool
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkAllocateCommandBuffers": {
"core": [
{
"vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
"text": " pAllocateInfo
must be a valid pointer to a valid VkCommandBufferAllocateInfo
structure"
},
{
"vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
"text": " pCommandBuffers
must be a valid pointer to an array of pAllocateInfo
::commandBufferCount VkCommandBuffer
handles"
}
]
},
"VkCommandBufferAllocateInfo": {
"core": [
{
"vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
"text": " commandBufferCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool
handle"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
"text": " level
must be a valid VkCommandBufferLevel value"
}
]
},
"vkResetCommandBuffer": {
"core": [
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
"text": " commandBuffer
must not be in the pending state"
},
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
"text": " commandBuffer
must have been allocated from a pool that was created with the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
"
},
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkResetCommandBuffer-flags-parameter",
"text": " flags
must be a valid combination of VkCommandBufferResetFlagBits values"
}
]
},
"vkFreeCommandBuffers": {
"core": [
{
"vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
"text": " All elements of pCommandBuffers
must not be in the pending state"
},
{
"vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
"text": " pCommandBuffers
must be a valid pointer to an array of commandBufferCount
VkCommandBuffer
handles, each element of which must either be a valid handle or NULL
"
},
{
"vuid": "VUID-vkFreeCommandBuffers-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool
handle"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
"text": " commandBufferCount
must be greater than 0
"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
"text": " commandPool
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
"text": " Each element of pCommandBuffers
that is a valid handle must have been created, allocated, or retrieved from commandPool
"
}
]
},
"vkBeginCommandBuffer": {
"core": [
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
"text": " commandBuffer
must not be in the recording or pending state."
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
"text": " If commandBuffer
was allocated from a VkCommandPool which did not have the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
flag set, commandBuffer
must be in the initial state."
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
"text": " If commandBuffer
is a secondary command buffer, the pInheritanceInfo
member of pBeginInfo
must be a valid VkCommandBufferInheritanceInfo
structure"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
"text": " If commandBuffer
is a secondary command buffer and either the occlusionQueryEnable
member of the pInheritanceInfo
member of pBeginInfo
is VK_FALSE
, or the precise occlusion queries feature is not enabled, the queryFlags
member of the pInheritanceInfo
member pBeginInfo
must not contain VK_QUERY_CONTROL_PRECISE_BIT
"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
"text": " pBeginInfo
must be a valid pointer to a valid VkCommandBufferBeginInfo
structure"
}
]
},
"VkCommandBufferBeginInfo": {
"core": [
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
, the renderPass
member of pInheritanceInfo
must be a valid VkRenderPass
"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
, the subpass
member of pInheritanceInfo
must be a valid subpass index within the renderPass
member of pInheritanceInfo
"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
, the framebuffer
member of pInheritanceInfo
must be either VK_NULL_HANDLE, or a valid VkFramebuffer
that is compatible with the renderPass
member of pInheritanceInfo
"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDeviceGroupCommandBufferBeginInfo"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
"text": " flags
must be a valid combination of VkCommandBufferUsageFlagBits values"
}
]
},
"VkCommandBufferInheritanceInfo": {
"core": [
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
"text": " If the inherited queries feature is not enabled, occlusionQueryEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
"text": " If the inherited queries feature is enabled, queryFlags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
"text": " If the pipeline statistics queries feature is not enabled, pipelineStatistics
must be 0
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkCommandBufferInheritanceConditionalRenderingInfoEXT"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
"text": " Both of framebuffer
, and renderPass
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
"text": " If the inherited conditional rendering feature is not enabled, conditionalRenderingEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT
"
}
]
},
"vkEndCommandBuffer": {
"core": [
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
"text": " commandBuffer
must be in the recording state."
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
"text": " If commandBuffer
is a primary command buffer, there must not be an active render pass instance"
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
"text": " All queries made active during the recording of commandBuffer
must have been made inactive"
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkEndCommandBuffer-None-01978",
"text": " Conditional rendering must not be active"
}
],
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
"text": " If commandBuffer
is a secondary command buffer, there must not be an outstanding vkCmdBeginDebugUtilsLabelEXT command recorded to commandBuffer
that has not previously been ended by a call to vkCmdEndDebugUtilsLabelEXT."
}
],
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
"text": " If commandBuffer
is a secondary command buffer, there must not be an outstanding vkCmdDebugMarkerBeginEXT command recorded to commandBuffer
that has not previously been ended by a call to vkCmdDebugMarkerEndEXT."
}
]
},
"vkQueueSubmit": {
"core": [
{
"vuid": "VUID-vkQueueSubmit-fence-00063",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be unsignaled"
},
{
"vuid": "VUID-vkQueueSubmit-fence-00064",
"text": " If fence
is not VK_NULL_HANDLE, fence
must 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 vkCmdSetEvent, vkCmdResetEvent or vkCmdWaitEvents that have been recorded into any of the command buffer elements of the pCommandBuffers
member of any element of pSubmits
, must not reference any VkEvent that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the pending state."
},
{
"vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
"text": " Any stage flag included in any element of the pWaitDstStageMask
member of any element of pSubmits
must be a pipeline stage supported by one of the capabilities of queue
, as specified in the table of supported pipeline stages."
},
{
"vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
"text": " Each element of the pSignalSemaphores
member of any element of pSubmits
must 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 pWaitSemaphores
member of any element of pSubmits
executes on queue
, no other queue must be waiting on the same semaphore."
},
{
"vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
"text": " All elements of the pWaitSemaphores
member of all elements of pSubmits
must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
"text": " Each element of the pCommandBuffers
member of each element of pSubmits
must be in the pending or executable state."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
"text": " If any element of the pCommandBuffers
member of any element of pSubmits
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
, it must not be in the pending state."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
"text": " Any secondary command buffers recorded into any element of the pCommandBuffers
member of any element of pSubmits
must be in the pending or executable state."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
"text": " If any secondary command buffers recorded into any element of the pCommandBuffers
member of any element of pSubmits
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
, it must not be in the pending state."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
"text": " Each element of the pCommandBuffers
member of each element of pSubmits
must have been allocated from a VkCommandPool
that was created for the same queue family queue
belongs to."
},
{
"vuid": "VUID-vkQueueSubmit-pSubmits-02207",
"text": " If any element of pSubmits
->pCommandBuffers
includes a Queue Family Transfer Acquire Operation, there must exist a previously submitted Queue Family Transfer Release Operation 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 acquire operations, and which happens before the acquire operation."
},
{
"vuid": "VUID-vkQueueSubmit-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
"text": " If submitCount
is not 0
, pSubmits
must be a valid pointer to an array of submitCount
valid VkSubmitInfo
structures"
},
{
"vuid": "VUID-vkQueueSubmit-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-vkQueueSubmit-commonparent",
"text": " Both of fence
, and queue
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkSubmitInfo": {
"core": [
{
"vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
"text": " Each element of pCommandBuffers
must not have been allocated with VK_COMMAND_BUFFER_LEVEL_SECONDARY
"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
"text": " If the geometry shaders feature is not enabled, each element of pWaitDstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
"text": " If the tessellation shaders feature is not enabled, each element of pWaitDstStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
"text": " Each element of pWaitDstStageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
."
},
{
"vuid": "VUID-VkSubmitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBMIT_INFO
"
},
{
"vuid": "VUID-VkSubmitInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkD3D12FenceSubmitInfoKHR, VkDeviceGroupSubmitInfo, VkProtectedSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV"
},
{
"vuid": "VUID-VkSubmitInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
"text": " If waitSemaphoreCount
is not 0
, pWaitSemaphores
must be a valid pointer to an array of waitSemaphoreCount
valid VkSemaphore
handles"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
"text": " If waitSemaphoreCount
is not 0
, pWaitDstStageMask
must be a valid pointer to an array of waitSemaphoreCount
valid combinations of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
"text": " Each element of pWaitDstStageMask
must not be 0
"
},
{
"vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
"text": " If commandBufferCount
is not 0
, pCommandBuffers
must be a valid pointer to an array of commandBufferCount
valid VkCommandBuffer
handles"
},
{
"vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
"text": " If signalSemaphoreCount
is not 0
, pSignalSemaphores
must be a valid pointer to an array of signalSemaphoreCount
valid VkSemaphore
handles"
},
{
"vuid": "VUID-VkSubmitInfo-commonparent",
"text": " Each of the elements of pCommandBuffers
, the elements of pSignalSemaphores
, and the elements of pWaitSemaphores
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089",
"text": " If the mesh shaders feature is not enabled, each element of pWaitDstStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090",
"text": " If the task shaders feature is not enabled, each element of pWaitDstStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"VkD3D12FenceSubmitInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
"text": " waitSemaphoreValuesCount
must be the same value as VkSubmitInfo
::waitSemaphoreCount
, where VkSubmitInfo
is in the pNext
chain of this VkD3D12FenceSubmitInfoKHR
structure."
},
{
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
"text": " signalSemaphoreValuesCount
must be the same value as VkSubmitInfo
::signalSemaphoreCount
, where VkSubmitInfo
is in the pNext
chain of this VkD3D12FenceSubmitInfoKHR
structure."
},
{
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR
"
},
{
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
"text": " If waitSemaphoreValuesCount
is not 0
, and pWaitSemaphoreValues
is not NULL
, pWaitSemaphoreValues
must be a valid pointer to an array of waitSemaphoreValuesCount
uint64_t
values"
},
{
"vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
"text": " If signalSemaphoreValuesCount
is not 0
, and pSignalSemaphoreValues
is not NULL
, pSignalSemaphoreValues
must be a valid pointer to an array of signalSemaphoreValuesCount
uint64_t
values"
}
]
},
"VkWin32KeyedMutexAcquireReleaseInfoKHR": {
"(VK_KHR_win32_keyed_mutex)": [
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
"text": " Each member of pAcquireSyncs
and pReleaseSyncs
must be a device memory object imported by setting VkImportMemoryWin32HandleInfoKHR::handleType
to VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
."
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR
"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
"text": " If acquireCount
is not 0
, pAcquireSyncs
must be a valid pointer to an array of acquireCount
valid VkDeviceMemory
handles"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
"text": " If acquireCount
is not 0
, pAcquireKeys
must be a valid pointer to an array of acquireCount
uint64_t
values"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
"text": " If acquireCount
is not 0
, pAcquireTimeouts
must be a valid pointer to an array of acquireCount
uint32_t
values"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
"text": " If releaseCount
is not 0
, pReleaseSyncs
must be a valid pointer to an array of releaseCount
valid VkDeviceMemory
handles"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
"text": " If releaseCount
is not 0
, pReleaseKeys
must be a valid pointer to an array of releaseCount
uint64_t
values"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
"text": " Both of the elements of pAcquireSyncs
, and the elements of pReleaseSyncs
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkWin32KeyedMutexAcquireReleaseInfoNV": {
"(VK_NV_win32_keyed_mutex)": [
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV
"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
"text": " If acquireCount
is not 0
, pAcquireSyncs
must be a valid pointer to an array of acquireCount
valid VkDeviceMemory
handles"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
"text": " If acquireCount
is not 0
, pAcquireKeys
must be a valid pointer to an array of acquireCount
uint64_t
values"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
"text": " If acquireCount
is not 0
, pAcquireTimeoutMilliseconds
must be a valid pointer to an array of acquireCount
uint32_t
values"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
"text": " If releaseCount
is not 0
, pReleaseSyncs
must be a valid pointer to an array of releaseCount
valid VkDeviceMemory
handles"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
"text": " If releaseCount
is not 0
, pReleaseKeys
must be a valid pointer to an array of releaseCount
uint64_t
values"
},
{
"vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
"text": " Both of the elements of pAcquireSyncs
, and the elements of pReleaseSyncs
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkProtectedSubmitInfo": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
"text": " If the protected memory feature is not enabled, protectedSubmit
must not be VK_TRUE
."
},
{
"vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817",
"text": " If protectedSubmit
is VK_TRUE
, then each element of the pCommandBuffers
array must be a protected command buffer."
},
{
"vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818",
"text": " If protectedSubmit
is VK_FALSE
, then each element of the pCommandBuffers
array must be an unprotected command buffer."
},
{
"vuid": "VUID-VkProtectedSubmitInfo-pNext-01819",
"text": " If the VkSubmitInfo
::pNext
chain does not include a VkProtectedSubmitInfo
structure, then each element of the command buffer of the pCommandBuffers
array must be an unprotected command buffer."
},
{
"vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO
"
}
]
},
"VkDeviceGroupSubmitInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
"text": " waitSemaphoreCount
must equal VkSubmitInfo::waitSemaphoreCount
"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
"text": " commandBufferCount
must equal VkSubmitInfo::commandBufferCount
"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
"text": " signalSemaphoreCount
must equal VkSubmitInfo::signalSemaphoreCount
"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
"text": " All elements of pWaitSemaphoreDeviceIndices
and pSignalSemaphoreDeviceIndices
must be valid device indices"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
"text": " All elements of pCommandBufferDeviceMasks
must be valid device masks"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO
"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
"text": " If waitSemaphoreCount
is not 0
, pWaitSemaphoreDeviceIndices
must be a valid pointer to an array of waitSemaphoreCount
uint32_t
values"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
"text": " If commandBufferCount
is not 0
, pCommandBufferDeviceMasks
must be a valid pointer to an array of commandBufferCount
uint32_t
values"
},
{
"vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
"text": " If signalSemaphoreCount
is not 0
, pSignalSemaphoreDeviceIndices
must be a valid pointer to an array of signalSemaphoreCount
uint32_t
values"
}
]
},
"vkCmdExecuteCommands": {
"core": [
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087",
"text": " commandBuffer
must have been allocated with a level
of VK_COMMAND_BUFFER_LEVEL_PRIMARY
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
"text": " Each element of pCommandBuffers
must have been allocated with a level
of VK_COMMAND_BUFFER_LEVEL_SECONDARY
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
"text": " Each element of pCommandBuffers
must be in the pending or executable state."
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00090",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, and it was recorded into any other primary command buffer, that primary command buffer must not be in the pending state"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, it must not be in the pending state."
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, it must not have already been recorded to commandBuffer
."
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, it must not appear more than once in pCommandBuffers
."
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
"text": " Each element of pCommandBuffers
must have been allocated from a VkCommandPool
that was created for the same queue family as the VkCommandPool
from which commandBuffer
was allocated"
},
{
"vuid": "VUID-vkCmdExecuteCommands-contents-00095",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, that render pass instance must have been begun with the contents
parameter of vkCmdBeginRenderPass
set to VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, each element of pCommandBuffers
must have been recorded with the VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::subpass
set to the index of the subpass which the given command buffer will be executed in"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, the render passes specified in the pBeginInfo
::pInheritanceInfo
::renderPass
members of the vkBeginCommandBuffer commands used to begin recording each element of pCommandBuffers
must be compatible with the current render pass."
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, and any element of pCommandBuffers
was recorded with VkCommandBufferInheritanceInfo
::framebuffer
not equal to VK_NULL_HANDLE, that VkFramebuffer
must match the VkFramebuffer
used in the current render pass instance"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
"text": " If vkCmdExecuteCommands
is not being called within a render pass instance, each element of pCommandBuffers
must not have been recorded with the VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
"text": " If the inherited queries feature is not enabled, commandBuffer
must not have any queries active"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
"text": " If commandBuffer
has a VK_QUERY_TYPE_OCCLUSION
query active, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::occlusionQueryEnable
set to VK_TRUE
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
"text": " If commandBuffer
has a VK_QUERY_TYPE_OCCLUSION
query active, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::queryFlags
having all bits set that are set for the query"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
"text": " If commandBuffer
has a VK_QUERY_TYPE_PIPELINE_STATISTICS
query active, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::pipelineStatistics
having all bits set that are set in the VkQueryPool
the query uses"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
"text": " Each element of pCommandBuffers
must not begin any query types that are active in commandBuffer
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
"text": " pCommandBuffers
must be a valid pointer to an array of commandBufferCount
valid VkCommandBuffer
handles"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
"text": " commandBufferCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commonparent",
"text": " Both of commandBuffer
, and the elements of pCommandBuffers
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
"text": " If commandBuffer
is a protected command buffer, then each element of pCommandBuffers
must be a protected command buffer."
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
"text": " If commandBuffer
is an unprotected command buffer, then each element of pCommandBuffers
must be an unprotected command buffer."
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdExecuteCommands-None-02286",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"VkDeviceGroupCommandBufferBeginInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
"text": " deviceMask
must be a valid device mask value"
},
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
"
}
]
},
"vkCmdSetDeviceMask": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
"text": " deviceMask
must be a valid device mask value"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
"text": " deviceMask
must not include any set bits that were not in the VkDeviceGroupCommandBufferBeginInfo::deviceMask
value when the command buffer began recording."
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
"text": " If vkCmdSetDeviceMask
is called inside a render pass instance, deviceMask
must not include any set bits that were not in the VkDeviceGroupRenderPassBeginInfo::deviceMask
value when the render pass instance began recording."
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
}
]
},
"vkCreateFence": {
"core": [
{
"vuid": "VUID-vkCreateFence-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkFenceCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateFence-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateFence-pFence-parameter",
"text": " pFence
must be a valid pointer to a VkFence
handle"
}
]
},
"VkFenceCreateInfo": {
"core": [
{
"vuid": "VUID-VkFenceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
"
},
{
"vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkExportFenceCreateInfo or VkExportFenceWin32HandleInfoKHR"
},
{
"vuid": "VUID-VkFenceCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkFenceCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkFenceCreateFlagBits values"
}
]
},
"VkExportFenceCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_fence)": [
{
"vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
"text": " The bits in handleTypes
must be supported and compatible, as reported by VkExternalFenceProperties."
},
{
"vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO
"
},
{
"vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalFenceHandleTypeFlagBits values"
}
]
},
"VkExportFenceWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
"text": " If VkExportFenceCreateInfo::handleTypes
does not include VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
, VkExportFenceWin32HandleInfoKHR
must not be in the pNext
chain of VkFenceCreateInfo."
},
{
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"vkGetFenceWin32HandleKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
"text": " pGetWin32HandleInfo
must be a valid pointer to a valid VkFenceGetWin32HandleInfoKHR
structure"
},
{
"vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
}
]
},
"VkFenceGetWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
"text": " handleType
must have been included in VkExportFenceCreateInfo::handleTypes
when the fence
’s current payload was created."
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
"text": " If handleType
is defined as an NT handle, vkGetFenceWin32HandleKHR must be called no more than once for each valid unique combination of fence
and handleType
."
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
"text": " fence
must not currently have its payload replaced by an imported payload as described below in Importing Fence Payloads unless that imported payload’s handle type was included in VkExternalFenceProperties::exportFromImportedHandleTypes
for handleType
."
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
"text": " If handleType
refers to a handle type with copy payload transference semantics, fence
must be signaled, or have an associated fence signal operation pending execution."
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
"text": " handleType
must be defined as an NT handle or a global share handle."
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
"text": " fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"vkGetFenceFdKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-vkGetFenceFdKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
"text": " pGetFdInfo
must be a valid pointer to a valid VkFenceGetFdInfoKHR
structure"
},
{
"vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
"text": " pFd
must be a valid pointer to an int
value"
}
]
},
"VkFenceGetFdInfoKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
"text": " handleType
must have been included in VkExportFenceCreateInfo::handleTypes
when fence
’s current payload was created."
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
"text": " If handleType
refers to a handle type with copy payload transference semantics, fence
must be signaled, or have an associated fence signal operation pending execution."
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
"text": " fence
must not currently have its payload replaced by an imported payload as described below in Importing Fence Payloads unless that imported payload’s handle type was included in VkExternalFenceProperties::exportFromImportedHandleTypes
for handleType
."
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
"text": " handleType
must be defined as a POSIX file descriptor handle."
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
"text": " fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"vkDestroyFence": {
"core": [
{
"vuid": "VUID-vkDestroyFence-fence-01120",
"text": " All queue submission commands that refer to fence
must have completed execution"
},
{
"vuid": "VUID-vkDestroyFence-fence-01121",
"text": " If VkAllocationCallbacks
were provided when fence
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyFence-fence-01122",
"text": " If no VkAllocationCallbacks
were provided when fence
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyFence-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyFence-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-vkDestroyFence-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyFence-fence-parent",
"text": " If fence
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetFenceStatus": {
"core": [
{
"vuid": "VUID-vkGetFenceStatus-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetFenceStatus-fence-parameter",
"text": " fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-vkGetFenceStatus-fence-parent",
"text": " fence
must have been created, allocated, or retrieved from device
"
}
]
},
"vkResetFences": {
"core": [
{
"vuid": "VUID-vkResetFences-pFences-01123",
"text": " Each element of pFences
must not be currently associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkResetFences-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkResetFences-pFences-parameter",
"text": " pFences
must be a valid pointer to an array of fenceCount
valid VkFence
handles"
},
{
"vuid": "VUID-vkResetFences-fenceCount-arraylength",
"text": " fenceCount
must be greater than 0
"
},
{
"vuid": "VUID-vkResetFences-pFences-parent",
"text": " Each element of pFences
must have been created, allocated, or retrieved from device
"
}
]
},
"vkWaitForFences": {
"core": [
{
"vuid": "VUID-vkWaitForFences-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkWaitForFences-pFences-parameter",
"text": " pFences
must be a valid pointer to an array of fenceCount
valid VkFence
handles"
},
{
"vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
"text": " fenceCount
must be greater than 0
"
},
{
"vuid": "VUID-vkWaitForFences-pFences-parent",
"text": " Each element of pFences
must have been created, allocated, or retrieved from device
"
}
]
},
"vkRegisterDeviceEventEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
"text": " pDeviceEventInfo
must be a valid pointer to a valid VkDeviceEventInfoEXT
structure"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
"text": " pFence
must be a valid pointer to a VkFence
handle"
}
]
},
"VkDeviceEventInfoEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
"
},
{
"vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
"text": " deviceEvent
must be a valid VkDeviceEventTypeEXT value"
}
]
},
"vkRegisterDisplayEventEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
"text": " pDisplayEventInfo
must be a valid pointer to a valid VkDisplayEventInfoEXT
structure"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
"text": " pFence
must be a valid pointer to a VkFence
handle"
}
]
},
"VkDisplayEventInfoEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT
"
},
{
"vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
"text": " displayEvent
must be a valid VkDisplayEventTypeEXT value"
}
]
},
"vkImportFenceWin32HandleKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
"text": " pImportFenceWin32HandleInfo
must be a valid pointer to a valid VkImportFenceWin32HandleInfoKHR
structure"
}
]
},
"VkImportFenceWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportFenceWin32HandleInfoKHR table."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
"text": " If handleType
is not VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
, name
must be NULL
."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
"text": " If handleType
is not 0
and handle
is NULL
, name
must name a valid synchronization primitive of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
"text": " If handleType
is not 0
and name
is NULL
, handle
must be a valid handle of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
"text": " If handle
is not NULL
, name
must be NULL
."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
"text": " If handle
is not NULL
, it must obey any requirements listed for handleType
in external fence handle types compatibility."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
"text": " If name
is not NULL
, it must obey any requirements listed for handleType
in external fence handle types compatibility."
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
"text": " fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkFenceImportFlagBits values"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"vkImportFenceFdKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-vkImportFenceFdKHR-fence-01463",
"text": " fence
must not be associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkImportFenceFdKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
"text": " pImportFenceFdInfo
must be a valid pointer to a valid VkImportFenceFdInfoKHR
structure"
}
]
},
"VkImportFenceFdInfoKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportFenceFdInfoKHR table."
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
"text": " fd
must obey any requirements listed for handleType
in external fence handle types compatibility."
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
"text": " fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkFenceImportFlagBits values"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"vkCreateSemaphore": {
"core": [
{
"vuid": "VUID-vkCreateSemaphore-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkSemaphoreCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
"text": " pSemaphore
must be a valid pointer to a VkSemaphore
handle"
}
]
},
"VkSemaphoreCreateInfo": {
"core": [
{
"vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
"
},
{
"vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkExportSemaphoreCreateInfo or VkExportSemaphoreWin32HandleInfoKHR"
},
{
"vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkExportSemaphoreCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
{
"vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
"text": " The bits in handleTypes
must be supported and compatible, as reported by VkExternalSemaphoreProperties."
},
{
"vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO
"
},
{
"vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalSemaphoreHandleTypeFlagBits values"
}
]
},
"VkExportSemaphoreWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
"text": " If VkExportSemaphoreCreateInfo::handleTypes
does not include VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
or VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
, VkExportSemaphoreWin32HandleInfoKHR
must not be in the pNext
chain of VkSemaphoreCreateInfo."
},
{
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"vkGetSemaphoreWin32HandleKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
"text": " pGetWin32HandleInfo
must be a valid pointer to a valid VkSemaphoreGetWin32HandleInfoKHR
structure"
},
{
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
}
]
},
"VkSemaphoreGetWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
"text": " handleType
must have been included in VkExportSemaphoreCreateInfo::handleTypes
when the semaphore
’s current payload was created."
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
"text": " If handleType
is defined as an NT handle, vkGetSemaphoreWin32HandleKHR must be called no more than once for each valid unique combination of semaphore
and handleType
."
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
"text": " semaphore
must not currently have its payload replaced by an imported payload as described below in Importing Semaphore Payloads unless that imported payload’s handle type was included in VkExternalSemaphoreProperties::exportFromImportedHandleTypes
for handleType
."
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
"text": " If handleType
refers to a handle type with copy payload transference semantics, as defined below in Importing Semaphore Payloads, there must be no queue waiting on semaphore
."
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must be signaled, or have an associated semaphore signal operation pending execution."
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
"text": " handleType
must be defined as an NT handle or a global share handle."
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"vkGetSemaphoreFdKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
"text": " pGetFdInfo
must be a valid pointer to a valid VkSemaphoreGetFdInfoKHR
structure"
},
{
"vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
"text": " pFd
must be a valid pointer to an int
value"
}
]
},
"VkSemaphoreGetFdInfoKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
"text": " handleType
must have been included in VkExportSemaphoreCreateInfo::handleTypes
when semaphore
’s current payload was created."
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
"text": " semaphore
must not currently have its payload replaced by an imported payload as described below in Importing Semaphore Payloads unless that imported payload’s handle type was included in VkExternalSemaphoreProperties::exportFromImportedHandleTypes
for handleType
."
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
"text": " If handleType
refers to a handle type with copy payload transference semantics, as defined below in Importing Semaphore Payloads, there must be no queue waiting on semaphore
."
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must be signaled, or have an associated semaphore signal operation pending execution."
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
"text": " handleType
must be defined as a POSIX file descriptor handle."
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"vkDestroySemaphore": {
"core": [
{
"vuid": "VUID-vkDestroySemaphore-semaphore-01137",
"text": " All submitted batches that refer to semaphore
must have completed execution"
},
{
"vuid": "VUID-vkDestroySemaphore-semaphore-01138",
"text": " If VkAllocationCallbacks
were provided when semaphore
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroySemaphore-semaphore-01139",
"text": " If no VkAllocationCallbacks
were provided when semaphore
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroySemaphore-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
"text": " If semaphore
is not VK_NULL_HANDLE, semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroySemaphore-semaphore-parent",
"text": " If semaphore
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkImportSemaphoreWin32HandleKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
"text": " pImportSemaphoreWin32HandleInfo
must be a valid pointer to a valid VkImportSemaphoreWin32HandleInfoKHR
structure"
}
]
},
"VkImportSemaphoreWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR table."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
"text": " If handleType
is not VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
or VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
, name
must be NULL
."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
"text": " If handleType
is not 0
and handle
is NULL
, name
must name a valid synchronization primitive of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
"text": " If handleType
is not 0
and name
is NULL
, handle
must be a valid handle of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
"text": " If handle
is not NULL
, name
must be NULL
."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
"text": " If handle
is not NULL
, it must obey any requirements listed for handleType
in external semaphore handle types compatibility."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
"text": " If name
is not NULL
, it must obey any requirements listed for handleType
in external semaphore handle types compatibility."
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkSemaphoreImportFlagBits values"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"vkImportSemaphoreFdKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
"text": " semaphore
must not be associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
"text": " pImportSemaphoreFdInfo
must be a valid pointer to a valid VkImportSemaphoreFdInfoKHR
structure"
}
]
},
"VkImportSemaphoreFdInfoKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportSemaphoreFdInfoKHR table."
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
"text": " fd
must obey any requirements listed for handleType
in external semaphore handle types compatibility."
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkSemaphoreImportFlagBits values"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"vkCreateEvent": {
"core": [
{
"vuid": "VUID-vkCreateEvent-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkEventCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateEvent-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateEvent-pEvent-parameter",
"text": " pEvent
must be a valid pointer to a VkEvent
handle"
}
]
},
"VkEventCreateInfo": {
"core": [
{
"vuid": "VUID-VkEventCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
"
},
{
"vuid": "VUID-VkEventCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkDestroyEvent": {
"core": [
{
"vuid": "VUID-vkDestroyEvent-event-01145",
"text": " All submitted commands that refer to event
must have completed execution"
},
{
"vuid": "VUID-vkDestroyEvent-event-01146",
"text": " If VkAllocationCallbacks
were provided when event
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyEvent-event-01147",
"text": " If no VkAllocationCallbacks
were provided when event
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyEvent-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyEvent-event-parameter",
"text": " If event
is not VK_NULL_HANDLE, event
must be a valid VkEvent
handle"
},
{
"vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyEvent-event-parent",
"text": " If event
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetEventStatus": {
"core": [
{
"vuid": "VUID-vkGetEventStatus-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetEventStatus-event-parameter",
"text": " event
must be a valid VkEvent
handle"
},
{
"vuid": "VUID-vkGetEventStatus-event-parent",
"text": " event
must have been created, allocated, or retrieved from device
"
}
]
},
"vkSetEvent": {
"core": [
{
"vuid": "VUID-vkSetEvent-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkSetEvent-event-parameter",
"text": " event
must be a valid VkEvent
handle"
},
{
"vuid": "VUID-vkSetEvent-event-parent",
"text": " event
must have been created, allocated, or retrieved from device
"
}
]
},
"vkResetEvent": {
"core": [
{
"vuid": "VUID-vkResetEvent-event-01148",
"text": " event
must not be waited on by a vkCmdWaitEvents
command that is currently executing"
},
{
"vuid": "VUID-vkResetEvent-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkResetEvent-event-parameter",
"text": " event
must be a valid VkEvent
handle"
},
{
"vuid": "VUID-vkResetEvent-event-parent",
"text": " event
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdSetEvent": {
"core": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-01149",
"text": " stageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-01150",
"text": " If the geometry shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-01151",
"text": " If the tessellation shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetEvent-event-parameter",
"text": " event
must be a valid VkEvent
handle"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
"text": " stageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
"text": " stageMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdSetEvent-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdSetEvent-commonparent",
"text": " Both of commandBuffer
, and event
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
"text": " commandBuffer
’s current device mask must include exactly one physical device."
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-02107",
"text": " If the mesh shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-02108",
"text": " If the task shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"vkCmdResetEvent": {
"core": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-01153",
"text": " stageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-01154",
"text": " If the geometry shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-01155",
"text": " If the tessellation shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-event-01156",
"text": " When this command executes, event
must not be waited on by a vkCmdWaitEvents
command that is currently executing"
},
{
"vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdResetEvent-event-parameter",
"text": " event
must be a valid VkEvent
handle"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
"text": " stageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
"text": " stageMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdResetEvent-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResetEvent-commonparent",
"text": " Both of commandBuffer
, and event
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
"text": " commandBuffer
’s current device mask must include exactly one physical device."
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-02109",
"text": " If the mesh shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-02110",
"text": " If the task shaders feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"vkCmdWaitEvents": {
"core": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
"text": " srcStageMask
must be the bitwise OR of the stageMask
parameter used in previous calls to vkCmdSetEvent
with any of the members of pEvents
and VK_PIPELINE_STAGE_HOST_BIT
if any of the members of pEvents
was set using vkSetEvent
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159",
"text": " If the geometry shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160",
"text": " If the geometry shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161",
"text": " If the tessellation shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162",
"text": " If the tessellation shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
"text": " If pEvents
includes one or more events that will be signaled by vkSetEvent
after commandBuffer
has been submitted to a queue, then vkCmdWaitEvents
must not be called inside a render pass instance"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164",
"text": " Any pipeline stage included in srcStageMask
or dstStageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages."
},
{
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165",
"text": " Each element of pMemoryBarriers
, pBufferMemoryBarriers
or pImageMemoryBarriers
must not have any access flag included in its srcAccessMask
member if that bit is not supported by any of the pipeline stages in srcStageMask
, as specified in the table of supported access types."
},
{
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166",
"text": " Each element of pMemoryBarriers
, pBufferMemoryBarriers
or pImageMemoryBarriers
must not have any access flag included in its dstAccessMask
member if that bit is not supported by any of the pipeline stages in dstStageMask
, as specified in the table of supported access types."
},
{
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
"text": " pEvents
must be a valid pointer to an array of eventCount
valid VkEvent
handles"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
"text": " srcStageMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
"text": " dstStageMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
"text": " If memoryBarrierCount
is not 0
, pMemoryBarriers
must be a valid pointer to an array of memoryBarrierCount
valid VkMemoryBarrier
structures"
},
{
"vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
"text": " If bufferMemoryBarrierCount
is not 0
, pBufferMemoryBarriers
must be a valid pointer to an array of bufferMemoryBarrierCount
valid VkBufferMemoryBarrier
structures"
},
{
"vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
"text": " If imageMemoryBarrierCount
is not 0
, pImageMemoryBarriers
must be a valid pointer to an array of imageMemoryBarrierCount
valid VkImageMemoryBarrier
structures"
},
{
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
"text": " eventCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents-commonparent",
"text": " Both of commandBuffer
, and the elements of pEvents
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
"text": " commandBuffer
’s current device mask must include exactly one physical device."
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-02111",
"text": " If the mesh shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-02112",
"text": " If the task shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-02113",
"text": " If the mesh shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-02114",
"text": " If the task shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"vkCmdPipelineBarrier": {
"core": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168",
"text": " If the geometry shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169",
"text": " If the geometry shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170",
"text": " If the tessellation shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171",
"text": " If the tessellation shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the render pass must have been created with at least one VkSubpassDependency
instance in VkRenderPassCreateInfo
::pDependencies
that expresses a dependency from the current subpass to itself, and for which srcStageMask
contains a subset of the bit values in VkSubpassDependency
::srcStageMask
, dstStageMask
contains a subset of the bit values in VkSubpassDependency
::dstStageMask
, dependencyFlags
is equal to VkSubpassDependency
::dependencyFlags
, srcAccessMask
member of each element of pMemoryBarriers
and pImageMemoryBarriers
contains a subset of the bit values in VkSubpassDependency
::srcAccessMask
, and dstAccessMask
member of each element of pMemoryBarriers
and pImageMemoryBarriers
contains a subset of the bit values in VkSubpassDependency
::dstAccessMask
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, bufferMemoryBarrierCount
must be 0
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the oldLayout
and newLayout
members of an element of pImageMemoryBarriers
must be equal"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the srcQueueFamilyIndex
and dstQueueFamilyIndex
members of any element of pImageMemoryBarriers
must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183",
"text": " Any pipeline stage included in srcStageMask
or dstStageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages."
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184",
"text": " Each element of pMemoryBarriers
, pBufferMemoryBarriers
and pImageMemoryBarriers
must not have any access flag included in its srcAccessMask
member if that bit is not supported by any of the pipeline stages in srcStageMask
, as specified in the table of supported access types."
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185",
"text": " Each element of pMemoryBarriers
, pBufferMemoryBarriers
and pImageMemoryBarriers
must not have any access flag included in its dstAccessMask
member if that bit is not supported by any of the pipeline stages in dstStageMask
, as specified in the table of supported access types."
},
{
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
"text": " srcStageMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
"text": " dstStageMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
"text": " dependencyFlags
must be a valid combination of VkDependencyFlagBits values"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
"text": " If memoryBarrierCount
is not 0
, pMemoryBarriers
must be a valid pointer to an array of memoryBarrierCount
valid VkMemoryBarrier
structures"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
"text": " If bufferMemoryBarrierCount
is not 0
, pBufferMemoryBarriers
must be a valid pointer to an array of bufferMemoryBarrierCount
valid VkBufferMemoryBarrier
structures"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
"text": " If imageMemoryBarrierCount
is not 0
, pImageMemoryBarriers
must be a valid pointer to an array of imageMemoryBarrierCount
valid VkImageMemoryBarrier
structures"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
}
],
"(VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-image-02635",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the image
member of any element of pImageMemoryBarriers
must be equal to one of the elements of pAttachments
that the current framebuffer
was created with, that is also referred to by one of the elements of the pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
members of the VkSubpassDescription
instance or by the pDepthStencilResolveAttachment
member of the VkSubpassDescriptionDepthStencilResolveKHR
structure that the current subpass was created with"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02636",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the oldLayout
and newLayout
members of any element of pImageMemoryBarriers
must be equal to the layout
member of an element of the pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
members of the VkSubpassDescription
instance or by the pDepthStencilResolveAttachment
member of the VkSubpassDescriptionDepthStencilResolveKHR
structure that the current subpass was created with, that refers to the same image
"
}
],
"!(VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-image-02637",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the image
member of any element of pImageMemoryBarriers
must be equal to one of the elements of pAttachments
that the current framebuffer
was created with, that is also referred to by one of the elements of the pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
members of the VkSubpassDescription
instance that the current subpass was created with"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02638",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the oldLayout
and newLayout
members of any element of pImageMemoryBarriers
must be equal to the layout
member of an element of the pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
members of the VkSubpassDescription
instance that the current subpass was created with, that refers to the same image
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
"text": " If vkCmdPipelineBarrier
is called outside of a render pass instance, dependencyFlags
must not include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02115",
"text": " If the mesh shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02116",
"text": " If the task shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02117",
"text": " If the mesh shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02118",
"text": " If the task shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"VkMemoryBarrier": {
"core": [
{
"vuid": "VUID-VkMemoryBarrier-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
"
},
{
"vuid": "VUID-VkMemoryBarrier-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
}
]
},
"VkBufferMemoryBarrier": {
"core": [
{
"vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
"text": " offset
must be less than the size of buffer
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-size-01188",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be greater than 0
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-size-01189",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be less than or equal to than the size of buffer
minus offset
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01196",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not VK_QUEUE_FAMILY_IGNORED
, at least one of them must be the same as the family of the queue that will execute this barrier"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
}
],
"!(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01192",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must either both be VK_QUEUE_FAMILY_IGNORED
, or both be a valid queue family (see Queue Family Properties)"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, at least one of srcQueueFamilyIndex
and dstQueueFamilyIndex
must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01763",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, and one of srcQueueFamilyIndex
and dstQueueFamilyIndex
is VK_QUEUE_FAMILY_IGNORED
, the other must be VK_QUEUE_FAMILY_IGNORED
or a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer."
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01193",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
and srcQueueFamilyIndex
is VK_QUEUE_FAMILY_IGNORED
, dstQueueFamilyIndex
must also be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01764",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
and srcQueueFamilyIndex
is not VK_QUEUE_FAMILY_IGNORED
, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer."
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-01765",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
and dstQueueFamilyIndex
is not VK_QUEUE_FAMILY_IGNORED
, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer."
}
]
},
"VkImageMemoryBarrier": {
"core": [
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
"text": " oldLayout
must be VK_IMAGE_LAYOUT_UNDEFINED
or the current layout of the image subresources affected by the barrier"
},
{
"vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
"text": " newLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01205",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not VK_QUEUE_FAMILY_IGNORED
, at least one of them must be the same as the family of the queue that will execute this barrier"
},
{
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
"text": " subresourceRange.baseMipLevel
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
"text": " If subresourceRange.levelCount
is not VK_REMAINING_MIP_LEVELS
, subresourceRange.baseMipLevel
+ subresourceRange.levelCount
must be less than or equal to the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
"text": " subresourceRange.baseArrayLayer
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
"text": " If subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, subresourceRange.baseArrayLayer
+ subresourceRange.layerCount
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01207",
"text": " If image
has a depth/stencil format with both depth and stencil components, then the aspectMask
member of subresourceRange
must include both VK_IMAGE_ASPECT_DEPTH_BIT
and VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01932",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkImageMemoryBarrier-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkSampleLocationsInfoEXT"
},
{
"vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
"text": " oldLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
"text": " newLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
"text": " subresourceRange
must be a valid VkImageSubresourceRange
structure"
}
],
"!(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageMemoryBarrier-image-01199",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01200",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must either both be VK_QUEUE_FAMILY_IGNORED
, or both be a valid queue family (see Queue Family Properties)."
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageMemoryBarrier-image-01381",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, at least one of srcQueueFamilyIndex
and dstQueueFamilyIndex
must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01766",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, and one of srcQueueFamilyIndex
and dstQueueFamilyIndex
is VK_QUEUE_FAMILY_IGNORED
, the other must be VK_QUEUE_FAMILY_IGNORED
or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer."
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01201",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
and srcQueueFamilyIndex
is VK_QUEUE_FAMILY_IGNORED
, dstQueueFamilyIndex
must also be VK_QUEUE_FAMILY_IGNORED
."
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01767",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
and srcQueueFamilyIndex
is not VK_QUEUE_FAMILY_IGNORED
, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer."
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01768",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
and dstQueueFamilyIndex
is not VK_QUEUE_FAMILY_IGNORED
, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer."
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageMemoryBarrier-image-01671",
"text": " If image
has a single-plane color format or is not disjoint, then the aspectMask
member of subresourceRange
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01672",
"text": " If image
has a multi-planar format and the image is disjoint, then the aspectMask
member of subresourceRange
must include either at least one of VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, and VK_IMAGE_ASPECT_PLANE_2_BIT
; or must include VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-01673",
"text": " If image
has a multi-planar format with only two planes, then the aspectMask
member of subresourceRange
must not include VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
"text": " If either oldLayout
or newLayout
is VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
then image
must have been created with VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
set"
}
]
},
"vkQueueWaitIdle": {
"core": [
{
"vuid": "VUID-vkQueueWaitIdle-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
}
]
},
"vkDeviceWaitIdle": {
"core": [
{
"vuid": "VUID-vkDeviceWaitIdle-device-parameter",
"text": " device
must be a valid VkDevice
handle"
}
]
},
"vkGetCalibratedTimestampsEXT": {
"(VK_EXT_calibrated_timestamps)": [
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
"text": " pTimestampInfos
must be a valid pointer to an array of timestampCount
valid VkCalibratedTimestampInfoEXT
structures"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
"text": " pTimestamps
must be a valid pointer to an array of timestampCount
uint64_t
values"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
"text": " pMaxDeviation
must be a valid pointer to a uint64_t
value"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
"text": " timestampCount
must be greater than 0
"
}
]
},
"VkCalibratedTimestampInfoEXT": {
"(VK_EXT_calibrated_timestamps)": [
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
"text": " timeDomain
must be one of the VkTimeDomainEXT values returned by vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"
},
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
"
},
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
"text": " timeDomain
must be a valid VkTimeDomainEXT value"
}
]
},
"vkCreateRenderPass": {
"core": [
{
"vuid": "VUID-vkCreateRenderPass-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkRenderPassCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
"text": " pRenderPass
must be a valid pointer to a VkRenderPass
handle"
}
]
},
"VkRenderPassCreateInfo": {
"core": [
{
"vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
"text": " If the attachment
member of any element of pInputAttachments
, pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
, or any element of pPreserveAttachments
in any element of pSubpasses
is not VK_ATTACHMENT_UNUSED
, it must be less than attachmentCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
"text": " For any member of pAttachments
with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
."
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
"text": " For any member of pAttachments
with a stencilLoadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
."
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
"text": " For any element of pDependencies
, if the srcSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the srcStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the source subpass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
"text": " For any element of pDependencies
, if the dstSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the dstStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the source subpass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517",
"text": " The srcSubpass
member of each element of pDependencies
must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518",
"text": " The dstSubpass
member of each element of pDependencies
must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkRenderPassFragmentDensityMapCreateInfoEXT, VkRenderPassInputAttachmentAspectCreateInfo, or VkRenderPassMultiviewCreateInfo"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkAttachmentDescription
structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
"text": " pSubpasses
must be a valid pointer to an array of subpassCount
valid VkSubpassDescription
structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
"text": " If dependencyCount
is not 0
, pDependencies
must be a valid pointer to an array of dependencyCount
valid VkSubpassDependency
structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
"text": " subpassCount
must be greater than 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
"text": " For any member of pAttachments
with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
."
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
"text": " For any member of pAttachments
with a stencilLoadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
."
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
"text": " If the pNext
chain includes an instance of VkRenderPassInputAttachmentAspectCreateInfo, the subpass
member of each element of its pAspectReferences
member must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
"text": " If the pNext
chain includes an instance of VkRenderPassInputAttachmentAspectCreateInfo, the inputAttachmentIndex
member of each element of its pAspectReferences
member must be less than the value of inputAttachmentCount
in the member of pSubpasses
identified by its subpass
member"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
"text": " If the pNext
chain includes an instance of VkRenderPassInputAttachmentAspectCreateInfo, for any element of the pInputAttachments
member of any element of pSubpasses
where the attachment
member is not VK_ATTACHMENT_UNUSED
, the aspectMask
member of the corresponding element of VkRenderPassInputAttachmentAspectCreateInfo::pAspectReferences
must only include aspects that are present in images of the format specified by the element of pAttachments
at attachment
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, and its subpassCount
member is not zero, that member must be equal to the value of subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, if its dependencyCount
member is not zero, it must be equal to dependencyCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, for each non-zero element of pViewOffsets
, the srcSubpass
and dstSubpass
members of pDependencies
at the same index must not be equal"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, for any element of pDependencies
with a dependencyFlags
member that does not include VK_DEPENDENCY_VIEW_LOCAL_BIT
, the corresponding element of the pViewOffsets
member of that VkRenderPassMultiviewCreateInfo instance must be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, elements of its pViewMasks
member must either all be 0
, or all not be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, and each element of its pViewMasks
member is 0
, the dependencyFlags
member of each element of pDependencies
must not include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, and each element of its pViewMasks
member is 0
, correlatedViewMaskCount
must be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02516",
"text": " If the pNext
chain includes an instance of VkRenderPassMultiviewCreateInfo, each element of its pViewMask
member must not have a bit set at an index greater than or equal to VkPhysicalDeviceLimits::maxFramebufferLayers
"
}
]
},
"VkRenderPassMultiviewCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
"text": " Each view index must not be set in more than one element of pCorrelationMasks
"
},
{
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO
"
},
{
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
"text": " If subpassCount
is not 0
, pViewMasks
must be a valid pointer to an array of subpassCount
uint32_t
values"
},
{
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
"text": " If dependencyCount
is not 0
, pViewOffsets
must be a valid pointer to an array of dependencyCount
int32_t
values"
},
{
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
"text": " If correlationMaskCount
is not 0
, pCorrelationMasks
must be a valid pointer to an array of correlationMaskCount
uint32_t
values"
}
]
},
"VkRenderPassFragmentDensityMapCreateInfoEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must be less than VkRenderPassCreateInfo
::attachmentCount
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must not be an element of VkSubpassDescription
::pInputAttachments
, VkSubpassDescription
::pColorAttachments
, VkSubpassDescription
::pResolveAttachments
, VkSubpassDescription
::pDepthStencilAttachment
, or VkSubpassDescription
::pPreserveAttachments
for any subpass"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, layout
must be equal to VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
, or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must reference an attachment with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_LOAD
or VK_ATTACHMENT_LOAD_OP_DONT_CARE
."
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must reference an attachment with a storeOp
equal to VK_ATTACHMENT_STORE_OP_DONT_CARE
."
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
"text": " fragmentDensityMapAttachment
must be a valid VkAttachmentReference
structure"
}
]
},
"VkAttachmentDescription": {
"core": [
{
"vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
"text": " finalLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentDescription-flags-parameter",
"text": " flags
must be a valid combination of VkAttachmentDescriptionFlagBits values"
},
{
"vuid": "VUID-VkAttachmentDescription-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkAttachmentDescription-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
"text": " loadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
"text": " storeOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
"text": " stencilLoadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
"text": " stencilStoreOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
"text": " initialLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
"text": " finalLayout
must be a valid VkImageLayout value"
}
]
},
"VkRenderPassInputAttachmentAspectCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
"
},
{
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
"text": " pAspectReferences
must be a valid pointer to an array of aspectReferenceCount
valid VkInputAttachmentAspectReference
structures"
},
{
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
"text": " aspectReferenceCount
must be greater than 0
"
}
]
},
"VkInputAttachmentAspectReference": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
for any index i
."
}
]
},
"VkSubpassDescription": {
"core": [
{
"vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
"text": " pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
"text": " colorAttachmentCount
must be less than or equal to VkPhysicalDeviceLimits
::maxColorAttachments
"
},
{
"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 loadOp
must not be VK_ATTACHMENT_LOAD_OP_CLEAR
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that is not VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that is not VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
"text": " If pResolveAttachments
is not NULL
, each resolve attachment that is not VK_ATTACHMENT_UNUSED
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
"text": " If pResolveAttachments
is not NULL
, each resolve attachment that is not VK_ATTACHMENT_UNUSED
must have the same VkFormat as its corresponding color attachment"
},
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
"text": " All attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
"text": " All attachments in pInputAttachments
that are not VK_ATTACHMENT_UNUSED
must have formats whose features contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
."
},
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
"text": " All attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have formats whose features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
"text": " All attachments in pResolveAttachments
that are not VK_ATTACHMENT_UNUSED
must have formats whose features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
"text": " If pDepthStencilAttachment
is not NULL
and the attachment is not VK_ATTACHMENT_UNUSED
then it must have a format whose features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
"text": " If neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, and if pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
and any attachments in pColorAttachments
are not VK_ATTACHMENT_UNUSED
, they must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-00853",
"text": " The attachment
member of each element of pPreserveAttachments
must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
"text": " Each element of pPreserveAttachments
must 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 VkAttachmentReference member, then each use must use the same layout
"
},
{
"vuid": "VUID-VkSubpassDescription-flags-parameter",
"text": " flags
must be a valid combination of VkSubpassDescriptionFlagBits values"
},
{
"vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
"text": " If inputAttachmentCount
is not 0
, pInputAttachments
must be a valid pointer to an array of inputAttachmentCount
valid VkAttachmentReference
structures"
},
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
"text": " If colorAttachmentCount
is not 0
, pColorAttachments
must be a valid pointer to an array of colorAttachmentCount
valid VkAttachmentReference
structures"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
"text": " If colorAttachmentCount
is not 0
, and pResolveAttachments
is not NULL
, pResolveAttachments
must be a valid pointer to an array of colorAttachmentCount
valid VkAttachmentReference
structures"
},
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
"text": " If pDepthStencilAttachment
is not NULL
, pDepthStencilAttachment
must be a valid pointer to a valid VkAttachmentReference
structure"
},
{
"vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
"text": " If preserveAttachmentCount
is not 0
, pPreserveAttachments
must be a valid pointer to an array of preserveAttachmentCount
uint32_t
values"
}
],
"(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
"text": " If the VK_AMD_mixed_attachment_samples
extension is enabled, and all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment
if it is not VK_ATTACHMENT_UNUSED
"
}
],
"(VK_NVX_multiview_per_view_attributes)": [
{
"vuid": "VUID-VkSubpassDescription-flags-00856",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
, it must also include VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
."
}
]
},
"VkAttachmentReference": {
"core": [
{
"vuid": "VUID-VkAttachmentReference-layout-00857",
"text": " If attachment
is not VK_ATTACHMENT_UNUSED
, layout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentReference-layout-parameter",
"text": " layout
must be a valid VkImageLayout value"
}
]
},
"VkSubpassDependency": {
"core": [
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00858",
"text": " If srcSubpass
is not VK_SUBPASS_EXTERNAL
, srcStageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstSubpass-00859",
"text": " If dstSubpass
is not VK_SUBPASS_EXTERNAL
, dstStageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
"text": " If the geometry shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
"text": " If the geometry shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
"text": " If the tessellation shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
"text": " If the tessellation shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
"text": " srcSubpass
must be less than or equal to dstSubpass
, unless one of them is VK_SUBPASS_EXTERNAL
, to avoid cyclic dependencies and ensure a valid execution order"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
"text": " srcSubpass
and dstSubpass
must not both be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-01989",
"text": " If srcSubpass
is equal to dstSubpass
, srcStageMask
and dstStageMask
must not set any bits that are neither VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
, nor one of the graphics pipeline stages"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
"text": " If srcSubpass
is equal to dstSubpass
and not all of the stages in srcStageMask
and dstStageMask
are framebuffer-space stages, the logically latest pipeline stage in srcStageMask
must be logically earlier than or equal to the logically earliest pipeline stage in dstStageMask
"
},
{
"vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
"text": " Any access flag included in srcAccessMask
must be supported by one of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
"text": " Any access flag included in dstAccessMask
must be supported by one of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
"text": " If srcSubpass
equals dstSubpass
, and srcStageMask
and dstStageMask
both include a framebuffer-space stage, then dependencyFlags
must include VK_DEPENDENCY_BY_REGION_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
"text": " srcStageMask
must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
"text": " dstStageMask
must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
"text": " dependencyFlags
must be a valid combination of VkDependencyFlagBits values"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, srcSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, dstSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
"text": " If srcSubpass
equals dstSubpass
and that subpass has more than one bit set in the view mask, then dependencyFlags
must include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-02099",
"text": " If the mesh shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-02100",
"text": " If the task shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-02101",
"text": " If the mesh shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-02102",
"text": " If the task shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"vkCreateRenderPass2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCreateRenderPass2KHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateRenderPass2KHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkRenderPassCreateInfo2KHR
structure"
},
{
"vuid": "VUID-vkCreateRenderPass2KHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateRenderPass2KHR-pRenderPass-parameter",
"text": " pRenderPass
must be a valid pointer to a VkRenderPass
handle"
}
]
},
"VkRenderPassCreateInfo2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-None-03049",
"text": " If any two subpasses operate on attachments with overlapping ranges of the same VkDeviceMemory
object, and at least one subpass writes to that area of VkDeviceMemory
, a subpass dependency must be included (either directly or via some intermediate subpasses) between them"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03050",
"text": " If the attachment
member of any element of pInputAttachments
, pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
, or the attachment indexed by any element of pPreserveAttachments
in any given element of pSubpasses
is bound to a range of a VkDeviceMemory
object that overlaps with any other attachment in any subpass (including the same subpass), the VkAttachmentDescription2KHR
structures describing them must include VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
in flags
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03051",
"text": " If the attachment
member of any element of pInputAttachments
, pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
, or any element of pPreserveAttachments
in any given element of pSubpasses
is not VK_ATTACHMENT_UNUSED
, it must be less than attachmentCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02522",
"text": " For any member of pAttachments
with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523",
"text": " For any member of pAttachments
with a stencilLoadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
."
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054",
"text": " For any element of pDependencies
, if the srcSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the srcStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the source subpass."
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03055",
"text": " For any element of pDependencies
, if the dstSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the dstStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the source subpass."
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-03056",
"text": " The set of bits included in any element of pCorrelatedViewMasks
must not overlap with the set of bits included in any other element of pCorrelatedViewMasks
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03057",
"text": " If the VkSubpassDescription2KHR::viewMask
member of all elements of pSubpasses
is 0
, correlatedViewMaskCount
must be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03058",
"text": " The VkSubpassDescription2KHR::viewMask
member of all elements of pSubpasses
must either all be 0
, or all not be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03059",
"text": " If the VkSubpassDescription2KHR::viewMask
member of all elements of pSubpasses
is 0
, the dependencyFlags
member of any element of pDependencies
must not include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03060",
"text": " For any element of pDependencies
where its srcSubpass
member equals its dstSubpass
member, if the viewMask
member of the corresponding element of pSubpasses
includes more than one bit, its dependencyFlags
member must include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-02524",
"text": " The viewMask
member must not have a bit set at an index greater than or equal to VkPhysicalDeviceLimits::maxFramebufferLayers
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-02525",
"text": " If the attachment
member of any element of the pInputAttachments
member of any element of pSubpasses
is not VK_ATTACHMENT_UNUSED
, the aspectMask
member of that element of pInputAttachments
must only include aspects that are present in images of the format specified by the element of pAttachments
specified by attachment
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-srcSubpass-02526",
"text": " The srcSubpass
member of each element of pDependencies
must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-dstSubpass-02527",
"text": " The dstSubpass
member of each element of pDependencies
must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkAttachmentDescription2KHR
structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pSubpasses-parameter",
"text": " pSubpasses
must be a valid pointer to an array of subpassCount
valid VkSubpassDescription2KHR
structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-parameter",
"text": " If dependencyCount
is not 0
, pDependencies
must be a valid pointer to an array of dependencyCount
valid VkSubpassDependency2KHR
structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-parameter",
"text": " If correlatedViewMaskCount
is not 0
, pCorrelatedViewMasks
must be a valid pointer to an array of correlatedViewMaskCount
uint32_t
values"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-subpassCount-arraylength",
"text": " subpassCount
must be greater than 0
"
}
]
},
"VkAttachmentDescription2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-03061",
"text": " finalLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR
"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-flags-parameter",
"text": " flags
must be a valid combination of VkAttachmentDescriptionFlagBits values"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-loadOp-parameter",
"text": " loadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-storeOp-parameter",
"text": " storeOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-stencilLoadOp-parameter",
"text": " stencilLoadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-stencilStoreOp-parameter",
"text": " stencilStoreOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-initialLayout-parameter",
"text": " initialLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-parameter",
"text": " finalLayout
must be a valid VkImageLayout value"
}
]
},
"VkSubpassDescription2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-03062",
"text": " pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-colorAttachmentCount-03063",
"text": " colorAttachmentCount
must be less than or equal to VkPhysicalDeviceLimits
::maxColorAttachments
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-loadOp-03064",
"text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp
must not be VK_ATTACHMENT_LOAD_OP_CLEAR
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03065",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that does not have the value VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not have the value VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03066",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that is not VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03067",
"text": " If pResolveAttachments
is not NULL
, each resolve attachment that is not VK_ATTACHMENT_UNUSED
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03068",
"text": " Any given element of pResolveAttachments
must have the same VkFormat as its corresponding color attachment"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03069",
"text": " All attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071",
"text": " If neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, and if pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
and any attachments in pColorAttachments
are not VK_ATTACHMENT_UNUSED
, they must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-attachment-03073",
"text": " The attachment
member of any element of pPreserveAttachments
must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074",
"text": " Any given element of pPreserveAttachments
must not also be an element of any other member of the subpass description"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-layout-02528",
"text": " If any attachment is used by more than one VkAttachmentReference member, then each use must use the same layout
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03175",
"text": " The aspectMask
member of any element of pInputAttachments
must be a valid combination of VkImageAspectFlagBits"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03176",
"text": " The aspectMask
member of any element of pInputAttachments
must not be 0
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-aspectMask-02529",
"text": " The aspectMask
member of each element of pInputAttachments
must not include VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-flags-parameter",
"text": " flags
must be a valid combination of VkSubpassDescriptionFlagBits values"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pInputAttachments-parameter",
"text": " If inputAttachmentCount
is not 0
, pInputAttachments
must be a valid pointer to an array of inputAttachmentCount
valid VkAttachmentReference2KHR
structures"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-parameter",
"text": " If colorAttachmentCount
is not 0
, pColorAttachments
must be a valid pointer to an array of colorAttachmentCount
valid VkAttachmentReference2KHR
structures"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-parameter",
"text": " If colorAttachmentCount
is not 0
, and pResolveAttachments
is not NULL
, pResolveAttachments
must be a valid pointer to an array of colorAttachmentCount
valid VkAttachmentReference2KHR
structures"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-parameter",
"text": " If pDepthStencilAttachment
is not NULL
, pDepthStencilAttachment
must be a valid pointer to a valid VkAttachmentReference2KHR
structure"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-parameter",
"text": " If preserveAttachmentCount
is not 0
, pPreserveAttachments
must be a valid pointer to an array of preserveAttachmentCount
uint32_t
values"
}
],
"(VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03070",
"text": " If the VK_AMD_mixed_attachment_samples
extension is enabled, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment
if it is not VK_ATTACHMENT_UNUSED
"
}
],
"(VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
{
"vuid": "VUID-VkSubpassDescription2KHR-flags-03076",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
, it must also include VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX
."
}
]
},
"VkSubpassDescriptionDepthStencilResolveKHR": {
"(VK_KHR_create_renderpass2)+(VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03177",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, pDepthStencilAttachment
must not have the value VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03178",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, depthResolveMode
and stencilResolveMode
must not both be VK_RESOLVE_MODE_NONE_KHR
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03179",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, pDepthStencilAttachment
must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03180",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, pDepthStencilResolveAttachment
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-02651",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
then it must have a format whose features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03181",
"text": " If the VkFormat of pDepthStencilResolveAttachment
has a depth component, then the VkFormat of pDepthStencilAttachment
must have a depth component with the same number of bits and numerical type"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03182",
"text": " If the VkFormat of pDepthStencilResolveAttachment
has a stencil component, then the VkFormat of pDepthStencilAttachment
must have a stencil component with the same number of bits and numerical type"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-03183",
"text": " The value of depthResolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolvePropertiesKHR::supportedDepthResolveModes
or VK_RESOLVE_MODE_NONE_KHR
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-03184",
"text": " The value of stencilResolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolvePropertiesKHR::supportedStencilResolveModes
or VK_RESOLVE_MODE_NONE_KHR
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03185",
"text": " If the VkFormat of pDepthStencilResolveAttachment
has both depth and stencil components, VkPhysicalDeviceDepthStencilResolvePropertiesKHR::independentResolve
is VK_FALSE
, and VkPhysicalDeviceDepthStencilResolvePropertiesKHR::independentResolveNone
is VK_FALSE
, then the values of depthResolveMode
and stencilResolveMode
must be identical"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03186",
"text": " If the VkFormat of pDepthStencilResolveAttachment
has both depth and stencil components, VkPhysicalDeviceDepthStencilResolvePropertiesKHR::independentResolve
is VK_FALSE
and VkPhysicalDeviceDepthStencilResolvePropertiesKHR::independentResolveNone
is VK_TRUE
, then the values of depthResolveMode
and stencilResolveMode
must be identical or one of them must be VK_RESOLVE_MODE_NONE_KHR
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter",
"text": " depthResolveMode
must be a valid VkResolveModeFlagBitsKHR value"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter",
"text": " stencilResolveMode
must be a valid VkResolveModeFlagBitsKHR value"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-parameter",
"text": " If pDepthStencilResolveAttachment
is not NULL
, pDepthStencilResolveAttachment
must be a valid pointer to a valid VkAttachmentReference2KHR
structure"
}
]
},
"VkAttachmentReference2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkAttachmentReference2KHR-layout-03077",
"text": " If attachment
is not VK_ATTACHMENT_UNUSED
, layout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentReference2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR
"
},
{
"vuid": "VUID-VkAttachmentReference2KHR-layout-parameter",
"text": " layout
must be a valid VkImageLayout value"
}
]
},
"VkSubpassDependency2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03078",
"text": " If srcSubpass
is not VK_SUBPASS_EXTERNAL
, srcStageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstSubpass-03079",
"text": " If dstSubpass
is not VK_SUBPASS_EXTERNAL
, dstStageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03080",
"text": " If the geometry shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03081",
"text": " If the geometry shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03082",
"text": " If the tessellation shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03083",
"text": " If the tessellation shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03084",
"text": " srcSubpass
must be less than or equal to dstSubpass
, unless one of them is VK_SUBPASS_EXTERNAL
, to avoid cyclic dependencies and ensure a valid execution order"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03085",
"text": " srcSubpass
and dstSubpass
must not both be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02244",
"text": " If srcSubpass
is equal to dstSubpass
, srcStageMask
and dstStageMask
must not set any bits that are neither VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
, nor one of the graphics pipeline stages"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03087",
"text": " If srcSubpass
is equal to dstSubpass
and not all of the stages in srcStageMask
and dstStageMask
are framebuffer-space stages, the logically latest pipeline stage in srcStageMask
must be logically earlier than or equal to the logically earliest pipeline stage in dstStageMask
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-03088",
"text": " Any access flag included in srcAccessMask
must be supported by one of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-03089",
"text": " Any access flag included in dstAccessMask
must be supported by one of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03090",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, srcSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03091",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, dstSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02245",
"text": " If srcSubpass
equals dstSubpass
, and srcStageMask
and dstStageMask
both include a framebuffer-space stage, then dependencyFlags
must include VK_DEPENDENCY_BY_REGION_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-viewOffset-02530",
"text": " If viewOffset
is not equal to 0
, srcSubpass
must not be equal to dstSubpass
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03092",
"text": " If dependencyFlags
does not include VK_DEPENDENCY_VIEW_LOCAL_BIT
, viewOffset
must be 0
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-viewOffset-03093",
"text": " If viewOffset
is not 0
, srcSubpass
must not be equal to dstSubpass
."
},
{
"vuid": "VUID-VkSubpassDependency2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-requiredbitmask",
"text": " srcStageMask
must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-requiredbitmask",
"text": " dstStageMask
must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-parameter",
"text": " dependencyFlags
must be a valid combination of VkDependencyFlagBits values"
}
],
"(VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02103",
"text": " If the mesh shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02104",
"text": " If the task shaders feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02105",
"text": " If the mesh shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02106",
"text": " If the task shaders feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV
"
}
]
},
"vkDestroyRenderPass": {
"core": [
{
"vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
"text": " All submitted commands that refer to renderPass
must have completed execution"
},
{
"vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
"text": " If VkAllocationCallbacks
were provided when renderPass
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
"text": " If no VkAllocationCallbacks
were provided when renderPass
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyRenderPass-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
"text": " If renderPass
is not VK_NULL_HANDLE, renderPass
must be a valid VkRenderPass
handle"
},
{
"vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
"text": " If renderPass
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateFramebuffer": {
"core": [
{
"vuid": "VUID-vkCreateFramebuffer-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkFramebufferCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
"text": " pFramebuffer
must be a valid pointer to a VkFramebuffer
handle"
}
]
},
"VkFramebufferCreateInfo": {
"core": [
{
"vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
"text": " attachmentCount
must be equal to the attachment count specified in renderPass
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
"text": " Each element of pAttachments
that is used as a color attachment or resolve attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
"text": " Each element of pAttachments
that is used as a depth/stencil attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
"text": " Each element of pAttachments
that is used as an input attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
"text": " Each element of pAttachments
must have been created with an VkFormat value that matches the VkFormat specified by the corresponding VkAttachmentDescription
in renderPass
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
"text": " Each element of pAttachments
must have been created with a samples
value that matches the samples
value specified by the corresponding VkAttachmentDescription
in renderPass
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
"text": " Each element of pAttachments
must only specify a single mip level"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
"text": " Each element of pAttachments
must have been created with the identity swizzle"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-width-00885",
"text": " width
must be greater than 0
."
},
{
"vuid": "VUID-VkFramebufferCreateInfo-width-00886",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferWidth
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-height-00887",
"text": " height
must be greater than 0
."
},
{
"vuid": "VUID-VkFramebufferCreateInfo-height-00888",
"text": " height
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferHeight
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
"text": " layers
must be greater than 0
."
},
{
"vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
"text": " layers
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferLayers
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
"text": " renderPass
must be a valid VkRenderPass
handle"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkImageView
handles"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-commonparent",
"text": " Both of renderPass
, and the elements of pAttachments
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
"text": " Each element of pAttachments
that is used as a depth/stencil resolve attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
"text": " Each element of pAttachments
that is used as a fragment density map attachment by renderPass
must not have been created with a flags
value including VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
."
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
"text": " If renderPass
has a fragment density map attachment and non-subsample image feature is not enabled, each element of pAttachments
must have been created with a flags
value including VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
unless that element is the fragment density map attachment."
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02554",
"text": " Each element of pAttachments
must have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by fragmentDensityMapAttachment
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
"text": " An element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a width at least as large as \\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\)"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
"text": " An element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a height at least as large as \\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\)"
}
],
"!(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882",
"text": " Each element of pAttachments
must have dimensions at least as large as the corresponding framebuffer dimension"
}
],
"!(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02743",
"text": " If renderPass
was specified with non-zero view masks, each element of pAttachments
must have a layerCount
greater than the index of the most significant bit set in any of those view masks"
}
],
"(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02744",
"text": " An element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a layerCount
equal to 1
"
}
],
"(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02745",
"text": " If renderPass
was specified with non-zero view masks, each element of pAttachments
that is not referenced by fragmentDensityMapAttachment
must have a layerCount
greater than the index of the most significant bit set in any of those view masks"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746",
"text": " If renderPass
was specified with non-zero view masks, each element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a layerCount
equal to 1
or greater than the index of the most significant bit set in any of those view masks"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747",
"text": " If renderPass
was not specified with non-zero view masks, each element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a layerCount
equal to 1
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
"text": " If renderPass
was specified with non-zero view masks, layers
must be 1
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
"text": " Each element of pAttachments
that is a 2D or 2D array image view taken from a 3D image must not be a depth/stencil format"
}
]
},
"vkDestroyFramebuffer": {
"core": [
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
"text": " All submitted commands that refer to framebuffer
must have completed execution"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
"text": " If VkAllocationCallbacks
were provided when framebuffer
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
"text": " If no VkAllocationCallbacks
were provided when framebuffer
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyFramebuffer-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
"text": " If framebuffer
is not VK_NULL_HANDLE, framebuffer
must be a valid VkFramebuffer
handle"
},
{
"vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
"text": " If framebuffer
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdBeginRenderPass": {
"core": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
"text": " If any of the initialLayout
members of the VkAttachmentDescription
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is not VK_IMAGE_LAYOUT_UNDEFINED
, then each such initialLayout
must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
"text": " The srcStageMask
and dstStageMask
members of any element of the pDependencies
member of VkRenderPassCreateInfo used to create renderPass
must be supported by the capabilities of the queue family identified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo used to create the command pool which commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
"text": " For any attachment in framebuffer
that is used by renderPass
and is bound to memory locations that are also bound to another attachment used by renderPass
, and if at least one of those uses causes either attachment to be written to, both attachments must have had the VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
set"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
"text": " pRenderPassBegin
must be a valid pointer to a valid VkRenderPassBeginInfo
structure"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
"text": " contents
must be a valid VkSubpassContents value"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
]
},
"vkCmdBeginRenderPass2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03094",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100",
"text": " If any of the initialLayout
members of the VkAttachmentDescription
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is not VK_IMAGE_LAYOUT_UNDEFINED
, then each such initialLayout
must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-srcStageMask-03101",
"text": " The srcStageMask
and dstStageMask
members of any element of the pDependencies
member of VkRenderPassCreateInfo used to create renderPass
must be supported by the capabilities of the queue family identified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo used to create the command pool which commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-framebuffer-02533",
"text": " For any attachment in framebuffer
that is used by renderPass
and is bound to memory locations that are also bound to another attachment used by renderPass
, and if at least one of those uses causes either attachment to be written to, both attachments must have had the VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
set"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-pRenderPassBegin-parameter",
"text": " pRenderPassBegin
must be a valid pointer to a valid VkRenderPassBeginInfo
structure"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-pSubpassBeginInfo-parameter",
"text": " pSubpassBeginInfo
must be a valid pointer to a valid VkSubpassBeginInfoKHR
structure"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
]
},
"VkRenderPassBeginInfo": {
"core": [
{
"vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
"text": " clearValueCount
must be greater than the largest attachment index in renderPass
that specifies a loadOp
(or stencilLoadOp
, if the attachment has a depth/stencil format) of VK_ATTACHMENT_LOAD_OP_CLEAR
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
"text": " renderPass
must be compatible with the renderPass
member of the VkFramebufferCreateInfo
structure specified when creating framebuffer
."
},
{
"vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupRenderPassBeginInfo or VkRenderPassSampleLocationsBeginInfoEXT"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
"text": " renderPass
must be a valid VkRenderPass
handle"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
"text": " framebuffer
must be a valid VkFramebuffer
handle"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter",
"text": " If clearValueCount
is not 0
, pClearValues
must be a valid pointer to an array of clearValueCount
VkClearValue
unions"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-commonparent",
"text": " Both of framebuffer
, and renderPass
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkRenderPassSampleLocationsBeginInfoEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT
"
},
{
"vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
"text": " If attachmentInitialSampleLocationsCount
is not 0
, pAttachmentInitialSampleLocations
must be a valid pointer to an array of attachmentInitialSampleLocationsCount
valid VkAttachmentSampleLocationsEXT
structures"
},
{
"vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
"text": " If postSubpassSampleLocationsCount
is not 0
, pPostSubpassSampleLocations
must be a valid pointer to an array of postSubpassSampleLocationsCount
valid VkSubpassSampleLocationsEXT
structures"
}
]
},
"VkAttachmentSampleLocationsEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
"text": " attachmentIndex
must be less than the attachmentCount
specified in VkRenderPassCreateInfo the render pass specified by VkRenderPassBeginInfo::renderPass
was created with"
},
{
"vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
"text": " sampleLocationsInfo
must be a valid VkSampleLocationsInfoEXT
structure"
}
]
},
"VkSubpassSampleLocationsEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
"text": " subpassIndex
must be less than the subpassCount
specified in VkRenderPassCreateInfo the render pass specified by VkRenderPassBeginInfo::renderPass
was created with"
},
{
"vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
"text": " sampleLocationsInfo
must be a valid VkSampleLocationsInfoEXT
structure"
}
]
},
"VkSubpassBeginInfoKHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassBeginInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR
"
},
{
"vuid": "VUID-VkSubpassBeginInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSubpassBeginInfoKHR-contents-parameter",
"text": " contents
must be a valid VkSubpassContents value"
}
]
},
"VkDeviceGroupRenderPassBeginInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
"text": " deviceMask
must be a valid device mask value"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
"text": " deviceMask
must be a subset of the command buffer’s initial device mask"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
"text": " deviceRenderAreaCount
must either be zero or equal to the number of physical devices in the logical device."
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO
"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
"text": " If deviceRenderAreaCount
is not 0
, pDeviceRenderAreas
must be a valid pointer to an array of deviceRenderAreaCount
VkRect2D
structures"
}
]
},
"vkGetRenderAreaGranularity": {
"core": [
{
"vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
"text": " renderPass
must be a valid VkRenderPass
handle"
},
{
"vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
"text": " pGranularity
must be a valid pointer to a VkExtent2D
structure"
},
{
"vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
"text": " renderPass
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdNextSubpass": {
"core": [
{
"vuid": "VUID-vkCmdNextSubpass-None-00909",
"text": " The current subpass index must be less than the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdNextSubpass-contents-parameter",
"text": " contents
must be a valid VkSubpassContents value"
},
{
"vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdNextSubpass-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdNextSubpass-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdNextSubpass-None-02349",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"vkCmdNextSubpass2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCmdNextSubpass2KHR-None-03102",
"text": " The current subpass index must be less than the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassBeginInfo-parameter",
"text": " pSubpassBeginInfo
must be a valid pointer to a valid VkSubpassBeginInfoKHR
structure"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassEndInfo-parameter",
"text": " pSubpassEndInfo
must be a valid pointer to a valid VkSubpassEndInfoKHR
structure"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdNextSubpass2KHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdNextSubpass2KHR-None-02350",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"vkCmdEndRenderPass": {
"core": [
{
"vuid": "VUID-vkCmdEndRenderPass-None-00910",
"text": " The current subpass index must be equal to the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndRenderPass-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndRenderPass-None-02351",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"vkCmdEndRenderPass2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-None-03103",
"text": " The current subpass index must be equal to the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-pSubpassEndInfo-parameter",
"text": " pSubpassEndInfo
must be a valid pointer to a valid VkSubpassEndInfoKHR
structure"
},
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndRenderPass2KHR-None-02352",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"VkSubpassEndInfoKHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassEndInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR
"
},
{
"vuid": "VUID-VkSubpassEndInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCreateShaderModule": {
"core": [
{
"vuid": "VUID-vkCreateShaderModule-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkShaderModuleCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
"text": " pShaderModule
must be a valid pointer to a VkShaderModule
handle"
}
]
},
"VkShaderModuleCreateInfo": {
"core": [
{
"vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
"text": " codeSize
must be greater than 0"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
"text": " pCode
must declare the Shader
capability for SPIR-V code"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
"text": " pCode
must not declare any capability that is not supported by the API, as described by the Capabilities section of the SPIR-V Environment appendix"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
"text": " If pCode
declares any of the capabilities listed as optional in the SPIR-V Environment appendix, the corresponding feature(s) must be enabled."
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkShaderModuleValidationCacheCreateInfoEXT"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
"text": " pCode
must be a valid pointer to an array of \\(\\textrm{codeSize} \\over 4\\) uint32_t
values"
}
],
"!(VK_NV_glsl_shader)": [
{
"vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
"text": " codeSize
must be a multiple of 4"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
"text": " pCode
must point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
"text": " pCode
must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix"
}
],
"(VK_NV_glsl_shader)": [
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
"text": " If pCode
points to SPIR-V code, codeSize
must be a multiple of 4"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
"text": " pCode
must point to either valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification or valid GLSL code which must be written to the GL_KHR_vulkan_glsl
extension specification"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
"text": " If pCode
points to SPIR-V code, that code must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
"text": " If pCode
points to GLSL code, it must be valid GLSL code written to the GL_KHR_vulkan_glsl
GLSL extension specification"
}
]
},
"VkShaderModuleValidationCacheCreateInfoEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
"text": " validationCache
must be a valid VkValidationCacheEXT
handle"
}
]
},
"vkDestroyShaderModule": {
"core": [
{
"vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
"text": " If VkAllocationCallbacks
were provided when shaderModule
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
"text": " If no VkAllocationCallbacks
were provided when shaderModule
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyShaderModule-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
"text": " If shaderModule
is not VK_NULL_HANDLE, shaderModule
must be a valid VkShaderModule
handle"
},
{
"vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
"text": " If shaderModule
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkCooperativeMatrixPropertiesNV
structures"
}
]
},
"VkCooperativeMatrixPropertiesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
"text": " AType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
"text": " BType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
"text": " CType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
"text": " DType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
"text": " scope
must be a valid VkScopeNV value"
}
]
},
"vkCreateValidationCacheEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkValidationCacheCreateInfoEXT
structure"
},
{
"vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
"text": " pValidationCache
must be a valid pointer to a VkValidationCacheEXT
handle"
}
]
},
"VkValidationCacheCreateInfoEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
"text": " If initialDataSize
is not 0
, it must be equal to the size of pInitialData
, as returned by vkGetValidationCacheDataEXT
when pInitialData
was originally retrieved"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
"text": " If initialDataSize
is not 0
, pInitialData
must have been retrieved from a previous call to vkGetValidationCacheDataEXT
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
"text": " If initialDataSize
is not 0
, pInitialData
must be a valid pointer to an array of initialDataSize
bytes"
}
]
},
"vkMergeValidationCachesEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
"text": " dstCache
must not appear in the list of source caches"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
"text": " dstCache
must be a valid VkValidationCacheEXT
handle"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
"text": " pSrcCaches
must be a valid pointer to an array of srcCacheCount
valid VkValidationCacheEXT
handles"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
"text": " srcCacheCount
must be greater than 0
"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
"text": " dstCache
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
"text": " Each element of pSrcCaches
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetValidationCacheDataEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
"text": " validationCache
must be a valid VkValidationCacheEXT
handle"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
"text": " pDataSize
must be a valid pointer to a size_t
value"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
"text": " If the value referenced by pDataSize
is not 0
, and pData
is not NULL
, pData
must be a valid pointer to an array of pDataSize
bytes"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
"text": " validationCache
must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyValidationCacheEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
"text": " If VkAllocationCallbacks
were provided when validationCache
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
"text": " If no VkAllocationCallbacks
were provided when validationCache
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
"text": " If validationCache
is not VK_NULL_HANDLE, validationCache
must be a valid VkValidationCacheEXT
handle"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
"text": " If validationCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateComputePipelines": {
"core": [
{
"vuid": "VUID-vkCreateComputePipelines-flags-00695",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and the basePipelineIndex
member of that same element is not -1
, basePipelineIndex
must be less than the index into pCreateInfos
that corresponds to that element"
},
{
"vuid": "VUID-vkCreateComputePipelines-flags-00696",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set"
},
{
"vuid": "VUID-vkCreateComputePipelines-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache
handle"
},
{
"vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of createInfoCount
valid VkComputePipelineCreateInfo
structures"
},
{
"vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
"text": " pPipelines
must be a valid pointer to an array of createInfoCount
VkPipeline
handles"
},
{
"vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
"text": " createInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkComputePipelineCreateInfo": {
"core": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is -1, basePipelineHandle
must be a valid handle to a compute VkPipeline
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is VK_NULL_HANDLE, basePipelineIndex
must be a valid index into the calling command’s pCreateInfos
parameter"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is not -1, basePipelineHandle
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is not VK_NULL_HANDLE, basePipelineIndex
must be -1"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
"text": " The stage
member of stage
must be VK_SHADER_STAGE_COMPUTE_BIT
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
"text": " The shader code for the entry point identified by stage
and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
"text": " layout
must be consistent with the layout of the compute shader specified in stage
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
"text": " The number of resources in layout
accessible to the compute shader stage must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageResources
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineCreationFeedbackCreateInfoEXT"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineCreateFlagBits values"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
"text": " stage
must be a valid VkPipelineShaderStageCreateInfo
structure"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
"text": " Both of basePipelineHandle
, and layout
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkPipelineShaderStageCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
"text": " If the geometry shaders feature is not enabled, stage
must not be VK_SHADER_STAGE_GEOMETRY_BIT
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
"text": " If the tessellation shaders feature is not enabled, stage
must not be VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
or VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
"text": " stage
must not be VK_SHADER_STAGE_ALL_GRAPHICS
, or VK_SHADER_STAGE_ALL
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
"text": " pName
must be the name of an OpEntryPoint
in module
with an execution model that matches stage
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
"text": " If the identified entry point includes any variable in its interface that is declared with the ClipDistance
BuiltIn
decoration, that variable must not have an array size greater than VkPhysicalDeviceLimits
::maxClipDistances
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
"text": " If the identified entry point includes any variable in its interface that is declared with the CullDistance
BuiltIn
decoration, that variable must not have an array size greater than VkPhysicalDeviceLimits
::maxCullDistances
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
"text": " If the identified entry point includes any variables in its interface that are declared with the ClipDistance
or CullDistance
BuiltIn
decoration, those variables must not have array sizes which sum to more than VkPhysicalDeviceLimits
::maxCombinedClipAndCullDistances
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
"text": " If the identified entry point includes any variable in its interface that is declared with the SampleMask
BuiltIn
decoration, that variable must not have an array size greater than VkPhysicalDeviceLimits
::maxSampleMaskWords
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
"text": " If stage
is VK_SHADER_STAGE_VERTEX_BIT
, the identified entry point must not include any input variable in its interface that is decorated with CullDistance
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
"text": " If stage
is VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
or VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
, and the identified entry point has an OpExecutionMode
instruction that specifies a patch size with OutputVertices
, the patch size must be greater than 0
and less than or equal to VkPhysicalDeviceLimits
::maxTessellationPatchSize
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
"text": " If stage
is VK_SHADER_STAGE_GEOMETRY_BIT
, the identified entry point must have an OpExecutionMode
instruction that specifies a maximum output vertex count that is greater than 0
and less than or equal to VkPhysicalDeviceLimits
::maxGeometryOutputVertices
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
"text": " If stage
is VK_SHADER_STAGE_GEOMETRY_BIT
, the identified entry point must have an OpExecutionMode
instruction that specifies an invocation count that is greater than 0
and less than or equal to VkPhysicalDeviceLimits
::maxGeometryShaderInvocations
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
"text": " If stage
is a vertex processing stage, and the identified entry point writes to Layer
for any primitive, it must write the same value to Layer
for all vertices of a given primitive"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
"text": " If stage
is a vertex processing stage, and the identified entry point writes to ViewportIndex
for any primitive, it must write the same value to ViewportIndex
for all vertices of a given primitive"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
"text": " If stage
is VK_SHADER_STAGE_FRAGMENT_BIT
, the identified entry point must not include any output variables in its interface decorated with CullDistance
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
"text": " If stage
is VK_SHADER_STAGE_FRAGMENT_BIT
, and the identified entry point writes to FragDepth
in any execution path, it must write to FragDepth
in all execution paths"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
"text": " stage
must be a valid VkShaderStageFlagBits value"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
"text": " module
must be a valid VkShaderModule
handle"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
"text": " If pSpecializationInfo
is not NULL
, pSpecializationInfo
must be a valid pointer to a valid VkSpecializationInfo
structure"
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
"text": " If the mesh shader feature is not enabled, stage
must not be VK_SHADER_STAGE_MESH_BIT_NV
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
"text": " If the task shader feature is not enabled, stage
must not be VK_SHADER_STAGE_TASK_BIT_NV
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093",
"text": " If stage
is VK_SHADER_STAGE_MESH_BIT_NV
, the identified entry point must have an OpExecutionMode
instruction that specifies a maximum output vertex count, OutputVertices
, that is greater than 0
and less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxMeshOutputVertices
."
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094",
"text": " If stage
is VK_SHADER_STAGE_MESH_BIT_NV
, the identified entry point must have an OpExecutionMode
instruction that specifies a maximum output primitive count, OutputPrimitivesNV
, that is greater than 0
and less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxMeshOutputPrimitives
."
}
],
"(VK_EXT_shader_stencil_export)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
"text": " If stage
is VK_SHADER_STAGE_FRAGMENT_BIT
, and the identified entry point writes to FragStencilRefEXT
in any execution path, it must write to FragStencilRefEXT
in all execution paths"
}
]
},
"vkCreateGraphicsPipelines": {
"core": [
{
"vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and the basePipelineIndex
member of that same element is not -1
, basePipelineIndex
must be less than the index into pCreateInfos
that corresponds to that element"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache
handle"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of createInfoCount
valid VkGraphicsPipelineCreateInfo
structures"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
"text": " pPipelines
must be a valid pointer to an array of createInfoCount
VkPipeline
handles"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
"text": " createInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkGraphicsPipelineCreateInfo": {
"core": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is -1, basePipelineHandle
must be a valid handle to a graphics VkPipeline
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is VK_NULL_HANDLE, basePipelineIndex
must be a valid index into the calling command’s pCreateInfos
parameter"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is not -1, basePipelineHandle
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is not VK_NULL_HANDLE, basePipelineIndex
must be -1"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
"text": " The stage
member of each element of pStages
must be unique"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
"text": " The stage
member of each element of pStages
must not be VK_SHADER_STAGE_COMPUTE_BIT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
"text": " If pStages
includes a tessellation control shader stage, it must include a tessellation evaluation shader stage"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
"text": " If pStages
includes a tessellation evaluation shader stage, it must include a tessellation control shader stage"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
"text": " If pStages
includes a tessellation control shader stage and a tessellation evaluation shader stage, pTessellationState
must be a valid pointer to a valid VkPipelineTessellationStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
"text": " If pStages
includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode
instruction that specifies the type of subdivision in the pipeline"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
"text": " If pStages
includes tessellation shader stages, and the shader code of both stages contain an OpExecutionMode
instruction that specifies the type of subdivision in the pipeline, they must both specify the same subdivision mode"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
"text": " If pStages
includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode
instruction that specifies the output patch size in the pipeline"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
"text": " If pStages
includes tessellation shader stages, and the shader code of both contain an OpExecutionMode
instruction that specifies the out patch size in the pipeline, they must both specify the same patch size"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
"text": " If pStages
includes tessellation shader stages, the topology
member of pInputAssembly
must be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
"text": " If the topology
member of pInputAssembly
is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
, pStages
must include tessellation shader stages"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
"text": " If pStages
includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain an OpExecutionMode
instruction that specifies an input primitive type that is compatible with the primitive topology specified in pInputAssembly
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
"text": " If pStages
includes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain an OpExecutionMode
instruction that specifies an input primitive type that is compatible with the primitive topology that is output by the tessellation stages"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
"text": " If pStages
includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with PrimitiveID
, then the geometry shader code must write to a matching output variable, decorated with PrimitiveID
, in all execution paths"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
"text": " If pStages
includes a fragment shader stage, its shader code must not read from any input attachment that is defined as VK_ATTACHMENT_UNUSED
in subpass
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
"text": " The shader code for the entry points identified by pStages
, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
"text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the blendEnable
member of the corresponding element of the pAttachment
member of pColorBlendState
must be VK_FALSE
if the attached image’s format features does not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
."
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
"text": " If rasterization is not disabled and the subpass uses color attachments, the attachmentCount
member of pColorBlendState
must be equal to the colorAttachmentCount
used to create subpass
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT
, the pViewports
member of pViewportState
must be a valid pointer to an array of pViewportState
::viewportCount
valid VkViewport
structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SCISSOR
, the pScissors
member of pViewportState
must be a valid pointer to an array of pViewportState
::scissorCount
VkRect2D
structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
"text": " If the wide lines feature is not enabled, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_LINE_WIDTH
, the lineWidth
member of pRasterizationState
must be 1.0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
"text": " If the rasterizerDiscardEnable
member of pRasterizationState
is VK_FALSE
, pViewportState
must be a valid pointer to a valid VkPipelineViewportStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
"text": " If the rasterizerDiscardEnable
member of pRasterizationState
is VK_FALSE
, pMultisampleState
must be a valid pointer to a valid VkPipelineMultisampleStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
"text": " If the rasterizerDiscardEnable
member of pRasterizationState
is VK_FALSE
, and subpass
uses a depth/stencil attachment, pDepthStencilState
must be a valid pointer to a valid VkPipelineDepthStencilStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
"text": " If the rasterizerDiscardEnable
member of pRasterizationState
is VK_FALSE
, and subpass
uses color attachments, pColorBlendState
must be a valid pointer to a valid VkPipelineColorBlendStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
"text": " If the depth bias clamping feature is not enabled, no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_DEPTH_BIAS
, and the depthBiasEnable
member of pRasterizationState
is VK_TRUE
, the depthBiasClamp
member of pRasterizationState
must be 0.0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
"text": " layout
must be consistent with all shaders specified in pStages
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
"text": " If neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, and if subpass
uses color and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState
must be the same as the sample count for those subpass attachments"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
"text": " If subpass
does not use any color and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState
must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
"text": " subpass
must be a valid subpass within renderPass
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
"text": " The number of resources in layout
accessible to each shader stage that is used by the pipeline must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageResources
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
"text": " If pStages
includes a vertex shader stage, pVertexInputState
must be a valid pointer to a valid VkPipelineVertexInputStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
"text": " If pStages
includes a vertex shader stage, pInputAssemblyState
must be a valid pointer to a valid VkPipelineInputAssemblyStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineCreationFeedbackCreateInfoEXT, VkPipelineDiscardRectangleStateCreateInfoEXT, or VkPipelineRepresentativeFragmentTestStateCreateInfoNV"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineCreateFlagBits values"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
"text": " pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo
structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
"text": " pRasterizationState
must be a valid pointer to a valid VkPipelineRasterizationStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
"text": " If pDynamicState
is not NULL
, pDynamicState
must be a valid pointer to a valid VkPipelineDynamicStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
"text": " renderPass
must be a valid VkRenderPass
handle"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
"text": " stageCount
must be greater than 0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
"text": " Each of basePipelineHandle
, layout
, and renderPass
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"!(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
"text": " The stage
member of one element of pStages
must be VK_SHADER_STAGE_VERTEX_BIT
"
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
"text": " The geometric shader stages provided in pStages
must be either from the mesh shading pipeline (stage
is VK_SHADER_STAGE_TASK_BIT_NV
or VK_SHADER_STAGE_MESH_BIT_NV
) or from the primitive shading pipeline (stage
is VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
, or VK_SHADER_STAGE_GEOMETRY_BIT
)."
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
"text": " The stage
member of one element of pStages
must be either VK_SHADER_STAGE_VERTEX_BIT
or VK_SHADER_STAGE_MESH_BIT_NV
."
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
"text": " If rasterization is not disabled and subpass
uses a depth/stencil attachment in renderPass
that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
in the VkAttachmentReference
defined by subpass
, the depthWriteEnable
member of pDepthStencilState
must be VK_FALSE
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
"text": " If rasterization is not disabled and subpass
uses a depth/stencil attachment in renderPass
that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
in the VkAttachmentReference
defined by subpass
, the failOp
, passOp
and depthFailOp
members of each of the front
and back
members of pDepthStencilState
must be VK_STENCIL_OP_KEEP
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
"text": " If rasterization is not disabled and subpass
uses a depth/stencil attachment in renderPass
that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
in the VkAttachmentReference
defined by subpass
, the depthWriteEnable
member of pDepthStencilState
must be VK_FALSE
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
"text": " If rasterization is not disabled and subpass
uses a depth/stencil attachment in renderPass
that has a layout of VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
in the VkAttachmentReference
defined by subpass
, the failOp
, passOp
and depthFailOp
members of each of the front
and back
members of pDepthStencilState
must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
"text": " If pStages
includes a fragment shader stage and an input attachment was referenced by the VkRenderPassInputAttachmentAspectCreateInfo at renderPass
create time, its shader code must not read from any aspect that was not specified in the aspectMask
of the corresponding VkInputAttachmentAspectReference structure."
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_DEPTH_BOUNDS
, and the depthBoundsTestEnable
member of pDepthStencilState
is VK_TRUE
, the minDepthBounds
and maxDepthBounds
members of pDepthStencilState
must be between 0.0
and 1.0
, inclusive"
}
],
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
"text": " If the VK_EXT_depth_range_unrestricted
extension is not enabled and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_DEPTH_BOUNDS
, and the depthBoundsTestEnable
member of pDepthStencilState
is VK_TRUE
, the minDepthBounds
and maxDepthBounds
members of pDepthStencilState
must be between 0.0
and 1.0
, inclusive"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure chained to the pNext
chain of pMultisampleState
is VK_TRUE
, sampleLocationsInfo.sampleLocationGridSize.width
must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure chained to the pNext
chain of pMultisampleState
is VK_TRUE
, sampleLocationsInfo.sampleLocationGridSize.height
must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure chained to the pNext
chain of pMultisampleState
is VK_TRUE
, sampleLocationsInfo.sampleLocationsPerPixel
must equal rasterizationSamples
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
"text": " If the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure chained to the pNext
chain of pMultisampleState
is VK_TRUE
, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
"text": " If the VK_AMD_mixed_attachment_samples
extension is enabled, and if subpass
uses color and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState
must equal the maximum of the sample counts of those subpass attachments"
}
],
"(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if subpass
has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the rasterizationSamples
member of pMultisampleState
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if subpass
has any color attachments, then the rasterizationSamples
member of pMultisampleState
must be greater than or equal to the sample count for those subpass attachments"
}
],
"(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722",
"text": " If the VK_NV_coverage_reduction_mode
extension is enabled, the coverage reduction mode specified by VkPipelineCoverageReductionStateCreateInfoNV::coverageReductionMode
, the rasterizationSamples
member of pMultisampleState
and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
"text": " If the renderPass
has multiview enabled and subpass
has more than one bit set in the view mask and multiviewTessellationShader
is not enabled, then pStages
must not include tessellation shaders."
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
"text": " If the renderPass
has multiview enabled and subpass
has more than one bit set in the view mask and multiviewGeometryShader
is not enabled, then pStages
must not include a geometry shader."
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
"text": " If the renderPass
has multiview enabled and subpass
has more than one bit set in the view mask, shaders in the pipeline must not write to the Layer
built-in output"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
"text": " If the renderPass
has multiview enabled, then all shaders must not include variables decorated with the Layer
built-in decoration in their interfaces."
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
"text": " flags
must not contain the VK_PIPELINE_CREATE_DISPATCH_BASE
flag."
}
],
"(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
, and the viewportWScalingEnable
member of a VkPipelineViewportWScalingStateCreateInfoNV structure, chained to the pNext
chain of pViewportState
, is VK_TRUE
, the pViewportWScalings
member of the VkPipelineViewportWScalingStateCreateInfoNV must be a pointer to an array of VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
valid VkViewportWScalingNV structures"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
"text": " The Xfb
execution mode can be specified by only one shader stage in pStages
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
"text": " If any shader stage in pStages
specifies Xfb
execution mode it must be the last vertex processing stage"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
"text": " If a VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with Position
, PointSize
, ClipDistance
, or CullDistance
must all be decorated with identical Stream
values that match the rasterizationStream
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
"text": " If VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with Position
, PointSize
, ClipDistance
, or CullDistance
must all be decorated with a Stream
value of zero, or must not specify the Stream
decoration"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
"text": " If the last vertex processing stage is a geometry shader, and that geometry shader uses the GeometryStreams
capability, then VkPhysicalDeviceTransformFeedbackFeaturesEXT
::geometryStreams
feature must be enabled"
}
],
"(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
"text": " If there are any mesh shader stages in the pipeline there must not be any shader stage in the pipeline with a Xfb
execution mode."
}
]
},
"VkPipelineDynamicStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
"text": " Each element of pDynamicStates
must be unique"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
"text": " If dynamicStateCount
is not 0
, pDynamicStates
must be a valid pointer to an array of dynamicStateCount
valid VkDynamicState values"
}
]
},
"vkDestroyPipeline": {
"core": [
{
"vuid": "VUID-vkDestroyPipeline-pipeline-00765",
"text": " All submitted commands that refer to pipeline
must have completed execution"
},
{
"vuid": "VUID-vkDestroyPipeline-pipeline-00766",
"text": " If VkAllocationCallbacks
were provided when pipeline
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyPipeline-pipeline-00767",
"text": " If no VkAllocationCallbacks
were provided when pipeline
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyPipeline-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
"text": " If pipeline
is not VK_NULL_HANDLE, pipeline
must be a valid VkPipeline
handle"
},
{
"vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyPipeline-pipeline-parent",
"text": " If pipeline
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreatePipelineCache": {
"core": [
{
"vuid": "VUID-vkCreatePipelineCache-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkPipelineCacheCreateInfo
structure"
},
{
"vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
"text": " pPipelineCache
must be a valid pointer to a VkPipelineCache
handle"
}
]
},
"VkPipelineCacheCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
"text": " If initialDataSize
is not 0
, it must be equal to the size of pInitialData
, as returned by vkGetPipelineCacheData
when pInitialData
was originally retrieved"
},
{
"vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
"text": " If initialDataSize
is not 0
, pInitialData
must have been retrieved from a previous call to vkGetPipelineCacheData
"
},
{
"vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
"text": " If initialDataSize
is not 0
, pInitialData
must be a valid pointer to an array of initialDataSize
bytes"
}
]
},
"vkMergePipelineCaches": {
"core": [
{
"vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
"text": " dstCache
must not appear in the list of source caches"
},
{
"vuid": "VUID-vkMergePipelineCaches-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
"text": " dstCache
must be a valid VkPipelineCache
handle"
},
{
"vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
"text": " pSrcCaches
must be a valid pointer to an array of srcCacheCount
valid VkPipelineCache
handles"
},
{
"vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
"text": " srcCacheCount
must be greater than 0
"
},
{
"vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
"text": " dstCache
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
"text": " Each element of pSrcCaches
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetPipelineCacheData": {
"core": [
{
"vuid": "VUID-vkGetPipelineCacheData-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
"text": " pipelineCache
must be a valid VkPipelineCache
handle"
},
{
"vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
"text": " pDataSize
must be a valid pointer to a size_t
value"
},
{
"vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
"text": " If the value referenced by pDataSize
is not 0
, and pData
is not NULL
, pData
must be a valid pointer to an array of pDataSize
bytes"
},
{
"vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
"text": " pipelineCache
must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyPipelineCache": {
"core": [
{
"vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
"text": " If VkAllocationCallbacks
were provided when pipelineCache
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
"text": " If no VkAllocationCallbacks
were provided when pipelineCache
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyPipelineCache-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache
handle"
},
{
"vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkSpecializationInfo": {
"core": [
{
"vuid": "VUID-VkSpecializationInfo-offset-00773",
"text": " The offset
member of each element of pMapEntries
must be less than dataSize
"
},
{
"vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
"text": " The size
member of each element of pMapEntries
must be less than or equal to dataSize
minus offset
"
},
{
"vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
"text": " If mapEntryCount
is not 0
, pMapEntries
must be a valid pointer to an array of mapEntryCount
valid VkSpecializationMapEntry
structures"
},
{
"vuid": "VUID-VkSpecializationInfo-pData-parameter",
"text": " If dataSize
is not 0
, pData
must be a valid pointer to an array of dataSize
bytes"
}
]
},
"VkSpecializationMapEntry": {
"core": [
{
"vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
"text": " For a constantID
specialization constant declared in a shader, size
must match the byte size of the constantID
. If the specialization constant is of type boolean
, size
must be the byte size of VkBool32
"
}
]
},
"vkCmdBindPipeline": {
"core": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_COMPUTE
, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_GRAPHICS
, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_COMPUTE
, pipeline
must be a compute pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_GRAPHICS
, pipeline
must be a graphics pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
"text": " If the variable multisample rate feature is not supported, pipeline
is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline must match that set in the previous pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline
handle"
},
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-commonparent",
"text": " Both of commandBuffer
, and pipeline
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
"text": " If VkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations
is VK_FALSE
, and pipeline
is a graphics pipeline created with a VkPipelineSampleLocationsStateCreateInfoEXT structure having its sampleLocationsEnable
member set to VK_TRUE
but without VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
enabled then the current render pass instance must have been begun by specifying a VkRenderPassSampleLocationsBeginInfoEXT structure whose pPostSubpassSampleLocations
member contains an element with a subpassIndex
matching the current subpass index and the sampleLocationsInfo
member of that element must match the sampleLocationsInfo
specified in VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was created"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBindPipeline-None-02323",
"text": " This command must not be recorded when transform feedback is active"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_RAY_TRACING_NV
, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_RAY_TRACING_NV
, the pipeline
must be a ray tracing pipeline"
}
]
},
"vkGetShaderInfoAMD": {
"(VK_AMD_shader_info)": [
{
"vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline
handle"
},
{
"vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
"text": " shaderStage
must be a valid VkShaderStageFlagBits value"
},
{
"vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
"text": " infoType
must be a valid VkShaderInfoTypeAMD value"
},
{
"vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
"text": " pInfoSize
must be a valid pointer to a size_t
value"
},
{
"vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
"text": " If the value referenced by pInfoSize
is not 0
, and pInfo
is not NULL
, pInfo
must be a valid pointer to an array of pInfoSize
bytes"
},
{
"vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateRayTracingPipelinesNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02402",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and the basePipelineIndex
member of that same element is not -1
, basePipelineIndex
must be less than the index into pCreateInfos
that corresponds to that element"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02403",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache
handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of createInfoCount
valid VkRayTracingPipelineCreateInfoNV
structures"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
"text": " pPipelines
must be a valid pointer to an array of createInfoCount
VkPipeline
handles"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
"text": " createInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkRayTracingPipelineCreateInfoNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02404",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is -1
, basePipelineHandle
must be a valid handle to a ray tracing VkPipeline
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02405",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is VK_NULL_HANDLE, basePipelineIndex
must be a valid index into the calling command’s pCreateInfos
parameter"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02406",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is not -1
, basePipelineHandle
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02407",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is not VK_NULL_HANDLE, basePipelineIndex
must be -1
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-02408",
"text": " The stage
member of one element of pStages
must be VK_SHADER_STAGE_RAYGEN_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-02409",
"text": " The shader code for the entry points identified by pStages
, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02410",
"text": " layout
must be consistent with all shaders specified in pStages
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02411",
"text": " The number of resources in layout
accessible to each shader stage that is used by the pipeline must be less than or equal to VkPhysicalDeviceLimits::maxPerStageResources
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-02412",
"text": " maxRecursionDepth
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxRecursionDepth
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineCreationFeedbackCreateInfoEXT"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineCreateFlagBits values"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
"text": " pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo
structures"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
"text": " pGroups
must be a valid pointer to an array of groupCount
valid VkRayTracingShaderGroupCreateInfoNV
structures"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
"text": " stageCount
must be greater than 0
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
"text": " groupCount
must be greater than 0
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
"text": " Both of basePipelineHandle
, and layout
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkRayTracingShaderGroupCreateInfoNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
then generalShader
must be a valid index into pStages
referring to a shader of VK_SHADER_STAGE_RAYGEN_BIT_NV
, VK_SHADER_STAGE_MISS_BIT_NV
, or VK_SHADER_STAGE_CALLABLE_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
then closestHitShader
, anyHitShader
, and intersectionShader
must be VK_SHADER_UNUSED_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
then intersectionShader
must be a valid index into pStages
referring to a shader of VK_SHADER_STAGE_INTERSECTION_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV
then intersectionShader
must be VK_SHADER_UNUSED_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
"text": " closestHitShader
must be either VK_SHADER_UNUSED_NV
or a valid index into pStages
referring to a shader of VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
"text": " anyHitShader
must be either VK_SHADER_UNUSED_NV
or a valid index into pStages
referring to a shader of VK_SHADER_STAGE_ANY_HIT_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
"text": " type
must be a valid VkRayTracingShaderGroupTypeNV value"
}
]
},
"vkGetRayTracingShaderGroupHandlesNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-firstGroup-02419",
"text": " The sum of firstGroup
and groupCount
must be less than the number of shader groups in pipeline
."
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-02420",
"text": " dataSize
must be at least VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
{times} groupCount
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline
handle"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCompileDeferredNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
"text": " pipeline
must have been created with VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV
"
},
{
"vuid": "VUID-vkCompileDeferredNV-shader-02238",
"text": " shader
must not have been called as a deferred compile before"
},
{
"vuid": "VUID-vkCompileDeferredNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline
handle"
},
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
]
},
"VkPipelineCreationFeedbackCreateInfoEXT": {
"(VK_EXT_pipeline_creation_feedback)": [
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668",
"text": " When chained to VkGraphicsPipelineCreateInfo, VkPipelineCreationFeedbackEXT::pipelineStageCreationFeedbackCount
must equal VkGraphicsPipelineCreateInfo::stageCount
"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669",
"text": " When chained to VkComputePipelineCreateInfo, VkPipelineCreationFeedbackEXT::pipelineStageCreationFeedbackCount
must equal 1"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter",
"text": " pPipelineCreationFeedback
must be a valid pointer to a VkPipelineCreationFeedbackEXT
structure"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter",
"text": " pPipelineStageCreationFeedbacks
must be a valid pointer to an array of pipelineStageCreationFeedbackCount
VkPipelineCreationFeedbackEXT
structures"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength",
"text": " pipelineStageCreationFeedbackCount
must be greater than 0
"
}
],
"(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670",
"text": " When chained to VkRayTracingPipelineCreateInfoNV, VkPipelineCreationFeedbackEXT::pipelineStageCreationFeedbackCount
must equal VkRayTracingPipelineCreateInfoNV::stageCount
"
}
]
},
"VkAllocationCallbacks": {
"core": [
{
"vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
"text": " pfnAllocation
must be a valid pointer to a valid user-defined PFN_vkAllocationFunction"
},
{
"vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
"text": " pfnReallocation
must be a valid pointer to a valid user-defined PFN_vkReallocationFunction"
},
{
"vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
"text": " pfnFree
must be a valid pointer to a valid user-defined PFN_vkFreeFunction"
},
{
"vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
"text": " If either of pfnInternalAllocation
or pfnInternalFree
is not NULL
, both must be valid callbacks"
}
]
},
"vkGetPhysicalDeviceMemoryProperties": {
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
"text": " pMemoryProperties
must be a valid pointer to a VkPhysicalDeviceMemoryProperties
structure"
}
]
},
"vkGetPhysicalDeviceMemoryProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
"text": " pMemoryProperties
must be a valid pointer to a VkPhysicalDeviceMemoryProperties2
structure"
}
]
},
"VkPhysicalDeviceMemoryProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2
"
},
{
"vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPhysicalDeviceMemoryBudgetPropertiesEXT or VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
}
]
},
"VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
"(VK_EXT_memory_budget)": [
{
"vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
"
}
]
},
"vkAllocateMemory": {
"core": [
{
"vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
"text": " pAllocateInfo
->allocationSize
must be less than or equal to VkPhysicalDeviceMemoryProperties::memoryHeaps
[pAllocateInfo
->memoryTypeIndex
].size
as returned by vkGetPhysicalDeviceMemoryProperties for the VkPhysicalDevice that device
was created from."
},
{
"vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
"text": " pAllocateInfo
->memoryTypeIndex
must be less than VkPhysicalDeviceMemoryProperties::memoryTypeCount
as returned by vkGetPhysicalDeviceMemoryProperties for the VkPhysicalDevice that device
was created from."
},
{
"vuid": "VUID-vkAllocateMemory-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
"text": " pAllocateInfo
must be a valid pointer to a valid VkMemoryAllocateInfo
structure"
},
{
"vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkAllocateMemory-pMemory-parameter",
"text": " pMemory
must be a valid pointer to a VkDeviceMemory
handle"
}
]
},
"VkMemoryAllocateInfo": {
"!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
"text": " allocationSize
must be greater than 0
"
}
],
"(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
"text": " If the pNext
chain contains an instance of VkExportMemoryAllocateInfo
, and any of the handle types specified in VkExportMemoryAllocateInfo
::handleTypes
require a dedicated allocation, as reported by vkGetPhysicalDeviceImageFormatProperties2 in VkExternalImageFormatProperties
::externalMemoryProperties
::externalMemoryFeatures
or VkExternalBufferProperties
::externalMemoryProperties
::externalMemoryFeatures
, the pNext
chain must contain an instance of ifdef::VK_KHR_dedicated_allocation[VkMemoryDedicatedAllocateInfo]"
}
],
"(VK_KHR_external_memory)+(VK_NV_external_memory)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
"text": " If the pNext
chain contains an instance of VkExportMemoryAllocateInfo, it must not contain an instance of VkExportMemoryAllocateInfoNV or VkExportMemoryWin32HandleInfoNV."
}
],
"(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
"text": " If the pNext
chain contains an instance of VkImportMemoryWin32HandleInfoKHR, it must not contain an instance of VkImportMemoryWin32HandleInfoNV."
}
],
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
"text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
, then the values of allocationSize
and memoryTypeIndex
must match those specified when the memory object being imported was created."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
"text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of memoryTypeIndex
must be one of those returned by vkGetMemoryFdPropertiesKHR."
}
],
"(VK_KHR_external_memory+VK_KHR_device_group)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-None-00643",
"text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by VkMemoryAllocateFlagsInfo must match that specified when the memory object being imported was allocated."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-None-00644",
"text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to vkAllocateMemory must match the list of physical devices that comprise the logical device on which the memory was originally allocated."
}
],
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
"text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of memoryTypeIndex
must be one of those returned by vkGetMemoryWin32HandlePropertiesKHR."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
"text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR
, then the values of allocationSize
and memoryTypeIndex
must match those specified when the memory object being imported was created."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
, allocationSize
must match the size reported in the memory requirements of the image
or buffer
member of the instance of VkDedicatedAllocationMemoryAllocateInfoNV
included in the pNext
chain."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
, allocationSize
must match the size specified when creating the Direct3D 12 heap from which the external handle was extracted."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
"text": " If the protected memory feature is not enabled, the VkMemoryAllocateInfo
::memoryTypeIndex
must not indicate a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
."
}
],
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
"text": " If the parameters define an import operation and the external handle is a host pointer, the value of memoryTypeIndex
must be one of those returned by vkGetMemoryHostPointerPropertiesEXT"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
"text": " If the parameters define an import operation and the external handle is a host pointer, allocationSize
must be an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT
::minImportedHostPointerAlignment
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, allocationSize
must be the size returned by vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, and the pNext
chain does not contain an instance of VkMemoryDedicatedAllocateInfo or VkMemoryDedicatedAllocateInfo::image
is VK_NULL_HANDLE, the Android hardware buffer must have a AHardwareBuffer_Desc
::format
of AHARDWAREBUFFER_FORMAT_BLOB
and a AHardwareBuffer_Desc
::usage
that includes AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, memoryTypeIndex
must be one of those returned by vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
"text": " If the parameters do not define an import operation, and the pNext
chain contains an instance of VkExportMemoryAllocateInfo
with VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
included in its handleTypes
member, and the pNext
contains an instance of VkMemoryDedicatedAllocateInfo with image
not equal to VK_NULL_HANDLE, then allocationSize
must be 0
, otherwise allocationSize
must be greater than 0
."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes an instance of VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, the Android hardware buffer’s AHardwareBuffer::usage
must include at least one of AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT
or AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes an instance of VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, the format of image
must be VK_FORMAT_UNDEFINED
or the format returned by vkGetAndroidHardwareBufferPropertiesANDROID in VkAndroidHardwareBufferFormatPropertiesANDROID::format
for the Android hardware buffer."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes an instance of VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, the width, height, and array layer dimensions of image
and the Android hardware buffer’s AHardwareBuffer_Desc
must be identical."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes an instance of VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, and the Android hardware buffer’s AHardwareBuffer::usage
includes AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE
, the image
must have a complete mipmap chain."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes an instance of VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, and the Android hardware buffer’s AHardwareBuffer::usage
does not include AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE
, the image
must have exactly one mipmap level."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes an instance of VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, each bit set in the usage of image
must be listed in AHardwareBuffer Usage Equivalence, and if there is a corresponding AHARDWAREBUFFER_USAGE
bit listed that bit must be included in the Android hardware buffer’s AHardwareBuffer_Desc
::usage
."
}
],
"core": [
{
"vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDedicatedAllocationMemoryAllocateInfoNV, VkExportMemoryAllocateInfo, VkExportMemoryAllocateInfoNV, VkExportMemoryWin32HandleInfoKHR, VkExportMemoryWin32HandleInfoNV, VkImportAndroidHardwareBufferInfoANDROID, VkImportMemoryFdInfoKHR, VkImportMemoryHostPointerInfoEXT, VkImportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV, VkMemoryAllocateFlagsInfo, VkMemoryDedicatedAllocateInfo, or VkMemoryPriorityAllocateInfoEXT"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
}
]
},
"VkMemoryDedicatedAllocateInfo": {
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
"text": " At least one of image
and buffer
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
"text": " If image
is not VK_NULL_HANDLE, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the image"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
"text": " If image
is not VK_NULL_HANDLE, image
must have been created without VK_IMAGE_CREATE_SPARSE_BINDING_BIT
set in VkImageCreateInfo
::flags
"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
"text": " If buffer
is not VK_NULL_HANDLE, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the buffer"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
"text": " If buffer
is not VK_NULL_HANDLE, buffer
must have been created without VK_BUFFER_CREATE_SPARSE_BINDING_BIT
set in VkBufferCreateInfo::flags
"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
"text": " If image
is not VK_NULL_HANDLE, image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
"text": " If buffer
is not VK_NULL_HANDLE, buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
"text": " Both of buffer
, and image
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
"text": " If image
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
, and the external handle was created by the Vulkan API, then the memory being imported must also be a dedicated image allocation and image
must be identical to the image associated with the imported memory."
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
"text": " If buffer
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
, and the external handle was created by the Vulkan API, then the memory being imported must also be a dedicated buffer allocation and buffer
must be identical to the buffer associated with the imported memory."
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
"text": " If image
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
, the memory being imported must also be a dedicated image allocation and image
must be identical to the image associated with the imported memory."
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
"text": " If buffer
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
, the memory being imported must also be a dedicated buffer allocation and buffer
must be identical to the buffer associated with the imported memory."
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
"text": " If image
is not VK_NULL_HANDLE, image
must not have been created with VK_IMAGE_CREATE_DISJOINT_BIT
set in VkImageCreateInfo::flags
"
}
]
},
"VkDedicatedAllocationMemoryAllocateInfoNV": {
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
"text": " At least one of image
and buffer
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
"text": " If image
is not VK_NULL_HANDLE, the image must have been created with VkDedicatedAllocationImageCreateInfoNV
::dedicatedAllocation
equal to VK_TRUE
"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
"text": " If buffer
is not VK_NULL_HANDLE, the buffer must have been created with VkDedicatedAllocationBufferCreateInfoNV
::dedicatedAllocation
equal to VK_TRUE
"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
"text": " If image
is not VK_NULL_HANDLE, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the image"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
"text": " If buffer
is not VK_NULL_HANDLE, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the buffer"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV
"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
"text": " If image
is not VK_NULL_HANDLE, image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
"text": " If buffer
is not VK_NULL_HANDLE, buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
"text": " Both of buffer
, and image
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
"text": " If image
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation, the memory being imported must also be a dedicated image allocation and image
must be identical to the image associated with the imported memory."
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
"text": " If buffer
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation, the memory being imported must also be a dedicated buffer allocation and buffer
must be identical to the buffer associated with the imported memory."
}
]
},
"VkMemoryPriorityAllocateInfoEXT": {
"(VK_EXT_memory_priority)": [
{
"vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
"text": " priority
must be between 0
and 1
, inclusive"
},
{
"vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
"
}
]
},
"VkExportMemoryAllocateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
"text": " The bits in handleTypes
must be supported and compatible, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties."
},
{
"vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBits values"
}
]
},
"VkExportMemoryWin32HandleInfoKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
"text": " If VkExportMemoryAllocateInfo::handleTypes
does not include VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
, VkExportMemoryWin32HandleInfoKHR
must not be in the pNext
chain of VkMemoryAllocateInfo."
},
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"VkImportMemoryWin32HandleInfoKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
"text": " If handleType
is not 0
, it must be supported for import, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
"text": " The memory from which handle
was exported, or the memory named by name
must have been created on the same underlying physical device as device
."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
"text": " If handleType
is not 0
, it must be defined as an NT handle or a global share handle."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
"text": " If handleType
is not VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
, name
must be NULL
."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
"text": " If handleType
is not 0
and handle
is NULL
, name
must name a valid memory resource of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
"text": " If handleType
is not 0
and name
is NULL
, handle
must be a valid handle of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
"text": " if handle
is not NULL
, name
must be NULL
."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
"text": " If handle
is not NULL
, it must obey any requirements listed for handleType
in external memory handle types compatibility."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
"text": " If name
is not NULL
, it must obey any requirements listed for handleType
in external memory handle types compatibility."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryWin32HandleKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
"text": " pGetWin32HandleInfo
must be a valid pointer to a valid VkMemoryGetWin32HandleInfoKHR
structure"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
}
]
},
"VkMemoryGetWin32HandleInfoKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
"text": " handleType
must have been included in VkExportMemoryAllocateInfo::handleTypes
when memory
was created."
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
"text": " If handleType
is defined as an NT handle, vkGetMemoryWin32HandleKHR must be called no more than once for each valid unique combination of memory
and handleType
."
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
"text": " handleType
must be defined as an NT handle or a global share handle."
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryWin32HandlePropertiesKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
"text": " handle
must be an external memory handle created outside of the Vulkan API."
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
"text": " handleType
must not be one of the handle types defined as opaque."
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
"text": " pMemoryWin32HandleProperties
must be a valid pointer to a VkMemoryWin32HandlePropertiesKHR
structure"
}
]
},
"VkMemoryWin32HandlePropertiesKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkImportMemoryFdInfoKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
"text": " If handleType
is not 0
, it must be supported for import, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties."
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
"text": " The memory from which fd
was exported must have been created on the same underlying physical device as device
."
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
"text": " If handleType
is not 0
, it must be defined as a POSIX file descriptor handle."
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
"text": " If handleType
is not 0
, fd
must be a valid handle of the type specified by handleType
."
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
"text": " The memory represented by fd
must have been created from a physical device and driver that is compatible with device
and handleType
, as described in External memory handle types compatibility."
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
"text": " fd
must obey any requirements listed for handleType
in external memory handle types compatibility."
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryFdKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
"text": " pGetFdInfo
must be a valid pointer to a valid VkMemoryGetFdInfoKHR
structure"
},
{
"vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
"text": " pFd
must be a valid pointer to an int
value"
}
]
},
"VkMemoryGetFdInfoKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
"text": " handleType
must have been included in VkExportMemoryAllocateInfo::handleTypes
when memory
was created."
},
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
"text": " handleType
must be defined as a POSIX file descriptor handle."
},
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryFdPropertiesKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
"text": " fd
must be an external memory handle created outside of the Vulkan API."
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
"text": " handleType
must not be VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR
."
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
"text": " pMemoryFdProperties
must be a valid pointer to a VkMemoryFdPropertiesKHR
structure"
}
]
},
"VkMemoryFdPropertiesKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkImportMemoryHostPointerInfoEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
"text": " If handleType
is not 0
, it must be supported for import, as reported in VkExternalMemoryPropertiesKHR"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
"text": " If handleType
is not 0
, it must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
"text": " pHostPointer
must be a pointer aligned to an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT
::minImportedHostPointerAlignment
"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
, pHostPointer
must be a pointer to allocationSize
number of bytes of host memory, where allocationSize
is the member of the VkMemoryAllocateInfo
structure this structure is chained to"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
, pHostPointer
must be a pointer to allocationSize
number of bytes of host mapped foreign memory, where allocationSize
is the member of the VkMemoryAllocateInfo
structure this structure is chained to"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT
"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryHostPointerPropertiesEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
"text": " handleType
must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
"text": " pHostPointer
must be a pointer aligned to an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT
::minImportedHostPointerAlignment
"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
, pHostPointer
must be a pointer to host memory"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
, pHostPointer
must be a pointer to host mapped foreign memory"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
"text": " pMemoryHostPointerProperties
must be a valid pointer to a VkMemoryHostPointerPropertiesEXT
structure"
}
]
},
"VkMemoryHostPointerPropertiesEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkImportAndroidHardwareBufferInfoANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
"text": " If buffer
is not NULL
, Android hardware buffers must be supported for import, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties."
},
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
"text": " If buffer
is not NULL
, it must be a valid Android hardware buffer object with AHardwareBuffer_Desc
::format
and AHardwareBuffer_Desc
::usage
compatible with Vulkan as described in Android Hardware Buffers."
},
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
"
},
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
"text": " buffer
must be a valid pointer to an AHardwareBuffer
value"
}
]
},
"vkGetMemoryAndroidHardwareBufferANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkMemoryGetAndroidHardwareBufferInfoANDROID
structure"
},
{
"vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
"text": " pBuffer
must be a valid pointer to a valid pointer to an AHardwareBuffer
value"
}
]
},
"VkMemoryGetAndroidHardwareBufferInfoANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
"text": " VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
must have been included in VkExportMemoryAllocateInfoKHR::handleTypes
when memory
was created."
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
"text": " If the pNext
chain of the VkMemoryAllocateInfo used to allocate memory
included a VkMemoryDedicatedAllocateInfo with non-NULL
image
member, then that image
must already be bound to memory
."
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
"
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
}
]
},
"vkGetAndroidHardwareBufferPropertiesANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
"text": " buffer
must be a valid Android hardware buffer object with at least one of the AHARDWAREBUFFER_USAGE_GPU_
* flags in its AHardwareBuffer_Desc
::usage
"
},
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
"text": " buffer
must be a valid pointer to a valid AHardwareBuffer
value"
},
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkAndroidHardwareBufferPropertiesANDROID
structure"
}
]
},
"VkAndroidHardwareBufferPropertiesANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
"
},
{
"vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkAndroidHardwareBufferFormatPropertiesANDROID"
}
]
},
"VkAndroidHardwareBufferFormatPropertiesANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID
"
}
]
},
"VkExportMemoryAllocateInfoNV": {
"(VK_NV_external_memory)": [
{
"vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV
"
},
{
"vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
}
]
},
"VkExportMemoryWin32HandleInfoNV": {
"(VK_NV_external_memory_win32)": [
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV
"
},
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"VkImportMemoryWin32HandleInfoNV": {
"(VK_NV_external_memory_win32)": [
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
"text": " handleType
must not have more than one bit set."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
"text": " handle
must be a valid handle to memory, obtained as specified by handleType
."
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
"text": " handleType
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
}
]
},
"vkGetMemoryWin32HandleNV": {
"(VK_NV_external_memory_win32)": [
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
"text": " handleType
must be a flag specified in VkExportMemoryAllocateInfoNV::handleTypes
when allocating memory
"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
"text": " handleType
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
"text": " handleType
must not be 0
"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
]
},
"VkMemoryAllocateFlagsInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
"text": " If VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
is set, deviceMask
must be a valid device mask."
},
{
"vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
"text": " If VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT
is set, deviceMask
must not be zero"
},
{
"vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO
"
},
{
"vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
"text": " flags
must be a valid combination of VkMemoryAllocateFlagBits values"
}
]
},
"vkFreeMemory": {
"core": [
{
"vuid": "VUID-vkFreeMemory-memory-00677",
"text": " All submitted commands that refer to memory
(via images or buffers) must have completed execution"
},
{
"vuid": "VUID-vkFreeMemory-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkFreeMemory-memory-parameter",
"text": " If memory
is not VK_NULL_HANDLE, memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkFreeMemory-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkFreeMemory-memory-parent",
"text": " If memory
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkMapMemory": {
"core": [
{
"vuid": "VUID-vkMapMemory-memory-00678",
"text": " memory
must not be currently host mapped"
},
{
"vuid": "VUID-vkMapMemory-offset-00679",
"text": " offset
must be less than the size of memory
"
},
{
"vuid": "VUID-vkMapMemory-size-00680",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be greater than 0
"
},
{
"vuid": "VUID-vkMapMemory-size-00681",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be less than or equal to the size of the memory
minus offset
"
},
{
"vuid": "VUID-vkMapMemory-memory-00682",
"text": " memory
must have been created with a memory type that reports VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
"
},
{
"vuid": "VUID-vkMapMemory-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkMapMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkMapMemory-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-vkMapMemory-ppData-parameter",
"text": " ppData
must be a valid pointer to a pointer value"
},
{
"vuid": "VUID-vkMapMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
],
"(VK_KHR_device_group)": [
{
"vuid": "VUID-vkMapMemory-memory-00683",
"text": " memory
must not have been allocated with multiple instances."
}
]
},
"vkFlushMappedMemoryRanges": {
"core": [
{
"vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
"text": " pMemoryRanges
must be a valid pointer to an array of memoryRangeCount
valid VkMappedMemoryRange
structures"
},
{
"vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
"text": " memoryRangeCount
must be greater than 0
"
}
]
},
"vkInvalidateMappedMemoryRanges": {
"core": [
{
"vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
"text": " pMemoryRanges
must be a valid pointer to an array of memoryRangeCount
valid VkMappedMemoryRange
structures"
},
{
"vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
"text": " memoryRangeCount
must be greater than 0
"
}
]
},
"VkMappedMemoryRange": {
"core": [
{
"vuid": "VUID-VkMappedMemoryRange-memory-00684",
"text": " memory
must be currently host mapped"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-00685",
"text": " If size
is not equal to VK_WHOLE_SIZE
, offset
and size
must specify a range contained within the currently mapped range of memory
"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-00686",
"text": " If size
is equal to VK_WHOLE_SIZE
, offset
must be within the currently mapped range of memory
"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-01389",
"text": " If size
is equal to VK_WHOLE_SIZE
, the end of the current mapping of memory
must be a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize
bytes from the beginning of the memory object."
},
{
"vuid": "VUID-VkMappedMemoryRange-offset-00687",
"text": " offset
must be a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize
"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-01390",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must either be a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize
, or offset
plus size
must equal the size of memory
."
},
{
"vuid": "VUID-VkMappedMemoryRange-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
"
},
{
"vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMappedMemoryRange-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
}
]
},
"vkUnmapMemory": {
"core": [
{
"vuid": "VUID-vkUnmapMemory-memory-00689",
"text": " memory
must be currently host mapped"
},
{
"vuid": "VUID-vkUnmapMemory-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkUnmapMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkUnmapMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetDeviceMemoryCommitment": {
"core": [
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
"text": " memory
must have been created with a memory type that reports VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
"text": " pCommittedMemoryInBytes
must be a valid pointer to a VkDeviceSize
value"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetDeviceGroupPeerMemoryFeatures": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
"text": " heapIndex
must be less than memoryHeapCount
"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
"text": " localDeviceIndex
must be a valid device index"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
"text": " remoteDeviceIndex
must be a valid device index"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
"text": " localDeviceIndex
must not equal remoteDeviceIndex
"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
"text": " pPeerMemoryFeatures
must be a valid pointer to a VkPeerMemoryFeatureFlags value"
}
]
},
"vkCreateBuffer": {
"core": [
{
"vuid": "VUID-vkCreateBuffer-flags-00911",
"text": " If the flags
member of pCreateInfo
includes VK_BUFFER_CREATE_SPARSE_BINDING_BIT
, creating this VkBuffer
must not cause the total required sparse memory for all currently valid sparse resources on the device to exceed VkPhysicalDeviceLimits
::sparseAddressSpaceSize
"
},
{
"vuid": "VUID-vkCreateBuffer-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkBufferCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
"text": " pBuffer
must be a valid pointer to a VkBuffer
handle"
}
]
},
"VkBufferCreateInfo": {
"core": [
{
"vuid": "VUID-VkBufferCreateInfo-size-00912",
"text": " size
must be greater than 0
"
},
{
"vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, queueFamilyIndexCount
must be greater than 1
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00915",
"text": " If the sparse bindings feature is not enabled, flags
must not contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00916",
"text": " If the sparse buffer residency feature is not enabled, flags
must not contain VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00917",
"text": " If the sparse aliased residency feature is not enabled, flags
must not contain VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00918",
"text": " If flags
contains VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
or VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
, it must also contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
"
},
{
"vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkBufferDeviceAddressCreateInfoEXT, VkDedicatedAllocationBufferCreateInfoNV, or VkExternalMemoryBufferCreateInfo"
},
{
"vuid": "VUID-VkBufferCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkBufferCreateFlagBits values"
},
{
"vuid": "VUID-VkBufferCreateInfo-usage-parameter",
"text": " usage
must be a valid combination of VkBufferUsageFlagBits values"
},
{
"vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
"text": " sharingMode
must be a valid VkSharingMode value"
}
],
"!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties for the physicalDevice
that was used to create device
"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferCreateInfo-pNext-00920",
"text": " If the pNext
chain contains an instance of VkExternalMemoryBufferCreateInfo, its handleTypes
member must only contain bits that are also in VkExternalBufferProperties::externalMemoryProperties.compatibleHandleTypes
, as returned by vkGetPhysicalDeviceExternalBufferProperties with pExternalBufferInfo
->handleType
equal to any one of the handle types specified in VkExternalMemoryBufferCreateInfo::handleTypes
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkBufferCreateInfo-flags-01887",
"text": " If the protected memory feature is not enabled, flags
must not contain VK_BUFFER_CREATE_PROTECTED_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-None-01888",
"text": " If any of the bits VK_BUFFER_CREATE_SPARSE_BINDING_BIT
, VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
, or VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
are set, VK_BUFFER_CREATE_PROTECTED_BIT
must not also be set"
}
],
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkBufferCreateInfo-pNext-01571",
"text": " If the pNext
chain contains an instance of VkDedicatedAllocationBufferCreateInfoNV, and the dedicatedAllocation
member of the chained structure is VK_TRUE
, then flags
must not include VK_BUFFER_CREATE_SPARSE_BINDING_BIT
, VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
, or VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
"
}
],
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
"text": " If VkBufferDeviceAddressCreateInfoEXT::deviceAddress
is not zero, flags
must include VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-02605",
"text": " If flags
includes VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
, the bufferDeviceAddressCaptureReplay feature must be enabled"
},
{
"vuid": "VUID-VkBufferCreateInfo-usage-02606",
"text": " If usage
includes VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT
, the bufferDeviceAddress feature must be enabled"
}
]
},
"VkDedicatedAllocationBufferCreateInfoNV": {
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV
"
}
]
},
"VkExternalMemoryBufferCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO
"
},
{
"vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBits values"
}
]
},
"VkBufferDeviceAddressCreateInfoEXT": {
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT
"
}
]
},
"vkDestroyBuffer": {
"core": [
{
"vuid": "VUID-vkDestroyBuffer-buffer-00922",
"text": " All submitted commands that refer to buffer
, either directly or via a VkBufferView
, must have completed execution"
},
{
"vuid": "VUID-vkDestroyBuffer-buffer-00923",
"text": " If VkAllocationCallbacks
were provided when buffer
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyBuffer-buffer-00924",
"text": " If no VkAllocationCallbacks
were provided when buffer
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyBuffer-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyBuffer-buffer-parameter",
"text": " If buffer
is not VK_NULL_HANDLE, buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyBuffer-buffer-parent",
"text": " If buffer
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateBufferView": {
"core": [
{
"vuid": "VUID-vkCreateBufferView-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkBufferViewCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateBufferView-pView-parameter",
"text": " pView
must be a valid pointer to a VkBufferView
handle"
}
]
},
"VkBufferViewCreateInfo": {
"core": [
{
"vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
"text": " offset
must be less than the size of buffer
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
"text": " If the texelBufferAlignment feature is not enabled, offset
must be a multiple of VkPhysicalDeviceLimits
::minTexelBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-range-00928",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
must be greater than 0
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-range-00929",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
must be an integer multiple of the texel block size of format
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-range-00930",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
divided by the texel block size of format
, multiplied by the number of texels per texel block for that format (as defined in the Compatible Formats table), must be less than or equal to VkPhysicalDeviceLimits
::maxTexelBufferElements
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
"text": " If range
is not equal to VK_WHOLE_SIZE
, the sum of offset
and range
must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
"text": " buffer
must have been created with a usage
value containing at least one of VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
or VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
"text": " If buffer
was created with usage
containing VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
, format
must be supported for uniform texel buffers, as specified by the VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
flag in VkFormatProperties
::bufferFeatures
returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
"text": " If buffer
was created with usage
containing VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
, format
must be supported for storage texel buffers, as specified by the VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
flag in VkFormatProperties
::bufferFeatures
returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
}
],
"(VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
"text": " If the texelBufferAlignment feature is enabled and if buffer
was created with usage
containing VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
, offset
must be a multiple of the lesser of VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::storageTexelBufferOffsetAlignmentBytes
or, if VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::storageTexelBufferOffsetSingleTexelAlignment
is VK_TRUE
, the size of a texel of the requested format
. If the size of a texel is a multiple of three bytes, then the size of a single component of format
is used instead"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
"text": " If the texelBufferAlignment feature is enabled and if buffer
was created with usage
containing VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
, offset
must be a multiple of the lesser of VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::uniformTexelBufferOffsetAlignmentBytes
or, if VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT::uniformTexelBufferOffsetSingleTexelAlignment
is VK_TRUE
, the size of a texel of the requested format
. If the size of a texel is a multiple of three bytes, then the size of a single component of format
is used instead"
}
]
},
"vkDestroyBufferView": {
"core": [
{
"vuid": "VUID-vkDestroyBufferView-bufferView-00936",
"text": " All submitted commands that refer to bufferView
must have completed execution"
},
{
"vuid": "VUID-vkDestroyBufferView-bufferView-00937",
"text": " If VkAllocationCallbacks
were provided when bufferView
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyBufferView-bufferView-00938",
"text": " If no VkAllocationCallbacks
were provided when bufferView
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyBufferView-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
"text": " If bufferView
is not VK_NULL_HANDLE, bufferView
must be a valid VkBufferView
handle"
},
{
"vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyBufferView-bufferView-parent",
"text": " If bufferView
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateImage": {
"core": [
{
"vuid": "VUID-vkCreateImage-flags-00939",
"text": " If the flags
member of pCreateInfo
includes VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, creating this VkImage
must not cause the total required sparse memory for all currently valid sparse resources on the device to exceed VkPhysicalDeviceLimits
::sparseAddressSpaceSize
"
},
{
"vuid": "VUID-vkCreateImage-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkImageCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateImage-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateImage-pImage-parameter",
"text": " pImage
must be a valid pointer to a VkImage
handle"
}
]
},
"VkImageCreateInfo": {
"core": [
{
"vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
"text": " Each of the following values (as described in Image Creation Limits) must not be undefined imageCreateMaxMipLevels
, imageCreateMaxArrayLayers
, imageCreateMaxExtent
, and imageCreateSampleCounts
."
},
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, queueFamilyIndexCount
must be greater than 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00944",
"text": " extent
::width
must be greater than 0
."
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00945",
"text": " extent
::height
must be greater than 0
."
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00946",
"text": " extent
::depth
must be greater than 0
."
},
{
"vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
"text": " mipLevels
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
"text": " arrayLayers
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-00949",
"text": " If flags
contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-02252",
"text": " extent.width
must be less than or equal to imageCreateMaxExtent.width
(as defined in Image Creation Limits)."
},
{
"vuid": "VUID-VkImageCreateInfo-extent-02253",
"text": " extent.height
must be less than or equal to imageCreateMaxExtent.height
(as defined in Image Creation Limits)."
},
{
"vuid": "VUID-VkImageCreateInfo-extent-02254",
"text": " extent.depth
must be less than or equal to imageCreateMaxExtent.depth
(as defined in Image Creation Limits)."
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00954",
"text": " If imageType
is VK_IMAGE_TYPE_2D
and flags
contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, extent.width
and extent.height
must be equal and arrayLayers
must be greater than or equal to 6"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00956",
"text": " If imageType
is VK_IMAGE_TYPE_1D
, both extent.height
and extent.depth
must be 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00957",
"text": " If imageType
is VK_IMAGE_TYPE_2D
, extent.depth
must be 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
"text": " mipLevels
must be less than or equal to the number of levels in the complete mipmap chain based on extent.width
, extent.height
, and extent.depth
."
},
{
"vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
"text": " mipLevels
must be less than or equal to imageCreateMaxMipLevels
(as defined in Image Creation Limits)."
},
{
"vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
"text": " arrayLayers
must be less than or equal to imageCreateMaxArrayLayers
(as defined in Image Creation Limits)."
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00961",
"text": " If imageType
is VK_IMAGE_TYPE_3D
, arrayLayers
must be 1
."
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02257",
"text": " If samples
is not VK_SAMPLE_COUNT_1_BIT
, then imageType
must be VK_IMAGE_TYPE_2D
, flags
must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, mipLevels
must be equal to 1
, and imageCreateMaybeLinear
(as defined in Image Creation Limits) must be false
,"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00963",
"text": " If usage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, then bits other than VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, and VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
must not be set"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00964",
"text": " If usage
includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.width
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferWidth
"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00965",
"text": " If usage
includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.height
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferHeight
"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00966",
"text": " If usage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, usage
must also contain at least one of VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02258",
"text": " samples
must be a bit value that is set in imageCreateSampleCounts
(as defined in Image Creation Limits)."
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00968",
"text": " If the multisampled storage images feature is not enabled, and usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, samples
must be VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-00969",
"text": " If the sparse bindings feature is not enabled, flags
must not contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-01924",
"text": " If the sparse aliased residency feature is not enabled, flags
must not contain VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00970",
"text": " If imageType
is VK_IMAGE_TYPE_1D
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00971",
"text": " If the sparse residency for 2D images feature is not enabled, and imageType
is VK_IMAGE_TYPE_2D
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00972",
"text": " If the sparse residency for 3D images feature is not enabled, and imageType
is VK_IMAGE_TYPE_3D
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00973",
"text": " If the sparse residency for images with 2 samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D
, and samples
is VK_SAMPLE_COUNT_2_BIT
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00974",
"text": " If the sparse residency for images with 4 samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D
, and samples
is VK_SAMPLE_COUNT_4_BIT
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00975",
"text": " If the sparse residency for images with 8 samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D
, and samples
is VK_SAMPLE_COUNT_8_BIT
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00976",
"text": " If the sparse residency for images with 16 samples feature is not enabled, imageType
is VK_IMAGE_TYPE_2D
, and samples
is VK_SAMPLE_COUNT_16_BIT
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-00987",
"text": " If flags
contains VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
, it must also contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-None-01925",
"text": " If any of the bits VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
are set, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
must not also be set"
},
{
"vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
"text": " initialLayout
must be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
."
},
{
"vuid": "VUID-VkImageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDedicatedAllocationImageCreateInfoNV, VkExternalFormatANDROID, VkExternalMemoryImageCreateInfo, VkExternalMemoryImageCreateInfoNV, VkImageDrmFormatModifierExplicitCreateInfoEXT, VkImageDrmFormatModifierListCreateInfoEXT, VkImageFormatListCreateInfoKHR, VkImageStencilUsageCreateInfoEXT, or VkImageSwapchainCreateInfoKHR"
},
{
"vuid": "VUID-VkImageCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-parameter",
"text": " imageType
must be a valid VkImageType value"
},
{
"vuid": "VUID-VkImageCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
"text": " sharingMode
must be a valid VkSharingMode value"
},
{
"vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
"text": " initialLayout
must be a valid VkImageLayout value"
}
],
"!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties for the physicalDevice
that was used to create device
"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
"
}
],
"!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageCreateInfo-format-00943",
"text": " format
must not be VK_FORMAT_UNDEFINED
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-01974",
"text": " If the pNext
chain contains an instance of VkExternalFormatANDROID, and its member externalFormat
is non-zero the format
must be VK_FORMAT_UNDEFINED
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-01975",
"text": " If the pNext
chain does not contain an instance of VkExternalFormatANDROID, or does and its member externalFormat
is 0
the format
must not be VK_FORMAT_UNDEFINED
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02393",
"text": " If the pNext
chain includes a VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, imageType
must be VK_IMAGE_TYPE_2D
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02394",
"text": " If the pNext
chain includes a VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, mipLevels
must either be 1
or equal to the number of levels in the complete mipmap chain based on extent.width
, extent.height
, and extent.depth
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02396",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
, flags
must not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02397",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
, usage
must not include any usages except VK_IMAGE_USAGE_SAMPLED_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02398",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
, tiling
must be VK_IMAGE_TILING_OPTIMAL
."
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-02557",
"text": " If flags
contains VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02558",
"text": " If samples
is not VK_SAMPLE_COUNT_1_BIT
, usage
must not contain VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-02559",
"text": " If usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, extent.width
must be less than or equal to \\(\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\rceil\\)"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-02560",
"text": " If usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, extent.height
must be less than or equal to \\(\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\rceil\\)"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02565",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, tiling
must be VK_IMAGE_TILING_OPTIMAL
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02566",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02567",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, flags
must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02568",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, mipLevels
must be 1
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-00950",
"text": " If flags
contains VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
, imageType
must be VK_IMAGE_TYPE_3D
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-01890",
"text": " If the protected memory feature is not enabled, flags
must not contain VK_IMAGE_CREATE_PROTECTED_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-None-01891",
"text": " If any of the bits VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
are set, VK_IMAGE_CREATE_PROTECTED_BIT
must not also be set."
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-00988",
"text": " If the pNext
chain contains an instance of VkExternalMemoryImageCreateInfoNV, it must not contain an instance of VkExternalMemoryImageCreateInfo."
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-00990",
"text": " If the pNext
chain contains an instance of VkExternalMemoryImageCreateInfo, its handleTypes
member must only contain bits that are also in VkExternalImageFormatProperties::externalMemoryProperties.compatibleHandleTypes
, as returned by vkGetPhysicalDeviceImageFormatProperties2 with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure, and with an instance of VkPhysicalDeviceExternalImageFormatInfo in the pNext
chain, with a handleType
equal to any one of the handle types specified in VkExternalMemoryImageCreateInfo::handleTypes
"
}
],
"(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-00991",
"text": " If the pNext
chain contains an instance of VkExternalMemoryImageCreateInfoNV, its handleTypes
member must only contain bits that are also in VkExternalImageFormatPropertiesNV::externalMemoryProperties.compatibleHandleTypes
, as returned by vkGetPhysicalDeviceExternalImageFormatPropertiesNV with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure, and with externalHandleType
equal to any one of the handle types specified in VkExternalMemoryImageCreateInfoNV::handleTypes
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
"text": " If the logical device was created with VkDeviceGroupDeviceCreateInfo::physicalDeviceCount
equal to 1, flags
must not contain VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02259",
"text": " If flags
contains VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
, then mipLevels
must be one, arrayLayers
must be one, imageType
must be VK_IMAGE_TYPE_2D
. and imageCreateMaybeLinear
(as defined in Image Creation Limits) must be false
."
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-01572",
"text": " If flags
contains VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
, then format
must be a block-compressed image format, an ETC compressed image format, or an ASTC compressed image format."
},
{
"vuid": "VUID-VkImageCreateInfo-flags-01573",
"text": " If flags
contains VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
, then flags
must also contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
."
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-01443",
"text": " If the pNext
chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[VkExternalMemoryImageCreateInfo]"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCreateInfo-format-02561",
"text": " If the image format
is one of those listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views, then mipLevels
must be 1"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02562",
"text": " If the image format
is one of those listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views, samples
must be VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02563",
"text": " If the image format
is one of those listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
"text": " If format
is a multi-planar format, and if imageCreateFormatFeatures
(as defined in Image Creation Limits) does not contain VK_FORMAT_FEATURE_DISJOINT_BIT
, then flags
must not contain VK_IMAGE_CREATE_DISJOINT_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-format-01577",
"text": " If format
is not a multi-planar format, and flags
does not include VK_IMAGE_CREATE_ALIAS_BIT
, flags
must not contain VK_IMAGE_CREATE_DISJOINT_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [
{
"vuid": "VUID-VkImageCreateInfo-format-02653",
"text": " If the image format
is one of those listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views, and the ycbcrImageArrays
feature is not enabled, arrayLayers
must be 1"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [
{
"vuid": "VUID-VkImageCreateInfo-format-02564",
"text": " If the image format
is one of those listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views, arrayLayers
must be 1"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageCreateInfo-tiling-02261",
"text": " If tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then the pNext
chain must contain exactly one of VkImageDrmFormatModifierListCreateInfoEXT or VkImageDrmFormatModifierExplicitCreateInfoEXT."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02262",
"text": " If the pNext
chain contains VkImageDrmFormatModifierListCreateInfoEXT or VkImageDrmFormatModifierExplicitCreateInfoEXT, then tiling
must be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
."
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-02353",
"text": " If tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
and flags
contains VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, then the pNext
chain must contain VkImageFormatListCreateInfoKHR with non-zero viewFormatCount
."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-01533",
"text": " If flags
contains VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
format
must be a depth or depth/stencil format"
}
],
"(VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageCreateInfo-format-02534",
"text": " If format
is a depth-stencil format and the pNext
chain contains an instance of VkImageStencilUsageCreateInfoEXT, then its stencilUsage
member must only include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
if usage
also includes it"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02535",
"text": " If format
is a depth-stencil format and the pNext
chain contains an instance of VkImageStencilUsageCreateInfoEXT, then its stencilUsage
member must only include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
if usage
also includes it"
},
{
"vuid": "VUID-VkImageCreateInfo-Format-02536",
"text": " If Format
is a depth-stencil format and the pNext
chain contains an instance of VkImageStencilUsageCreateInfoEXT with its stencilUsage
member including VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.width
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferWidth
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02537",
"text": " If format
is a depth-stencil format and the pNext
chain contains an instance of VkImageStencilUsageCreateInfoEXT with its stencilUsage
member including VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.height
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferHeight
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02538",
"text": " If the multisampled storage images feature is not enabled, format
is a depth-stencil format and the pNext
chain contains an instance of VkImageStencilUsageCreateInfoEXT with its stencilUsage
including VK_IMAGE_USAGE_STORAGE_BIT
, samples
must be VK_SAMPLE_COUNT_1_BIT
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-02050",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
, imageType
must be VK_IMAGE_TYPE_2D
or VK_IMAGE_TYPE_3D
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02051",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
, it must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
and the format
must not be a depth/stencil format"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02052",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
and imageType
is VK_IMAGE_TYPE_2D
, extent
::width
and extent
::height
must be greater than 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02053",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
and imageType
is VK_IMAGE_TYPE_3D
, extent
::width
, extent
::height
, and extent
::depth
must be greater than 1
"
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageCreateInfo-imageType-02082",
"text": " If usage
includes VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, imageType
must be VK_IMAGE_TYPE_2D
."
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02083",
"text": " If usage
includes VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, samples
must be VK_SAMPLE_COUNT_1_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-02084",
"text": " If usage
includes VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, tiling
must be VK_IMAGE_TILING_OPTIMAL
."
}
]
},
"VkImageStencilUsageCreateInfoEXT": {
"(VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-02539",
"text": " If stencilUsage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, then bits other than VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, and VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
must not be set"
},
{
"vuid": "VUID-VkImageStencilUsageCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-parameter",
"text": " stencilUsage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-requiredbitmask",
"text": " stencilUsage
must not be 0
"
}
]
},
"VkDedicatedAllocationImageCreateInfoNV": {
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
"text": " If dedicatedAllocation
is VK_TRUE
, VkImageCreateInfo
::flags
must not include VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
},
{
"vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
"
}
]
},
"VkExternalMemoryImageCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBits values"
},
{
"vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
"text": " handleTypes
must not be 0
"
}
]
},
"VkExternalMemoryImageCreateInfoNV": {
"(VK_NV_external_memory)": [
{
"vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
}
]
},
"VkExternalFormatANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
"text": " externalFormat
must be 0
or a value returned in the externalFormat
member of VkAndroidHardwareBufferFormatPropertiesANDROID by an earlier call to vkGetAndroidHardwareBufferPropertiesANDROID"
},
{
"vuid": "VUID-VkExternalFormatANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
"
}
]
},
"VkImageSwapchainCreateInfoKHR": {
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
"text": " If swapchain
is not VK_NULL_HANDLE, the fields of VkImageCreateInfo must match the implied image creation parameters of the swapchain"
},
{
"vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
"text": " If swapchain
is not VK_NULL_HANDLE, swapchain
must be a valid VkSwapchainKHR
handle"
}
]
},
"VkImageFormatListCreateInfoKHR": {
"(VK_KHR_image_format_list)": [
{
"vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578",
"text": " If viewFormatCount
is not 0
, all of the formats in the pViewFormats
array must be compatible with the format specified in the format
field of VkImageCreateInfo
, as described in the compatibility table."
},
{
"vuid": "VUID-VkImageFormatListCreateInfoKHR-flags-01579",
"text": " If VkImageCreateInfo
::flags
does not contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, viewFormatCount
must be 0
or 1
."
},
{
"vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580",
"text": " If viewFormatCount
is not 0
, VkImageCreateInfo
::format
must be in pViewFormats
."
},
{
"vuid": "VUID-VkImageFormatListCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkImageFormatListCreateInfoKHR-pViewFormats-parameter",
"text": " If viewFormatCount
is not 0
, pViewFormats
must be a valid pointer to an array of viewFormatCount
valid VkFormat values"
}
]
},
"VkImageDrmFormatModifierListCreateInfoEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
"text": " Each modifier in pDrmFormatModifiers
must be compatible with the parameters in VkImageCreateInfo and its pNext
chain, as determined by querying VkPhysicalDeviceImageFormatInfo2 extended with VkPhysicalDeviceImageDrmFormatModifierInfoEXT."
},
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
"text": " pDrmFormatModifiers
must be a valid pointer to an array of drmFormatModifierCount
uint64_t
values"
},
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
"text": " drmFormatModifierCount
must be greater than 0
"
}
]
},
"VkImageDrmFormatModifierExplicitCreateInfoEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
"text": " drmFormatModifier
must be compatible with the parameters in VkImageCreateInfo and its pNext
chain, as determined by querying VkPhysicalDeviceImageFormatInfo2KHR extended with VkPhysicalDeviceImageDrmFormatModifierInfoEXT."
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
"text": " drmFormatModifierPlaneCount
must be equal to the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with VkImageCreateInfo::format
and drmFormatModifier
, as found by querying VkDrmFormatModifierPropertiesListEXT."
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
"text": " For each element of pPlaneLayouts
, size
must be 0"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
"text": " For each element of pPlaneLayouts
, arrayPitch
must be 0 if VkImageCreateInfo::arrayLayers
is 1."
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
"text": " For each element of pPlaneLayouts
, depthPitch
must be 0 if VkImageCreateInfo::extent
::depth
is 1."
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
"text": " If drmFormatModifierPlaneCount
is not 0
, pPlaneLayouts
must be a valid pointer to an array of drmFormatModifierPlaneCount
VkSubresourceLayout
structures"
}
]
},
"vkGetImageSubresourceLayout": {
"!(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
and the index i
must be less than the drmFormatModifierPlaneCount
associated with the image’s format
and drmFormatModifier
."
}
],
"core": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
"text": " The aspectMask
member of pSubresource
must only have a single bit set"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
"text": " The mipLevel
member of pSubresource
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
"text": " The arrayLayer
member of pSubresource
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
"text": " pSubresource
must be a valid pointer to a valid VkImageSubresource
structure"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
"text": " pLayout
must be a valid pointer to a VkSubresourceLayout
structure"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_LINEAR
and its format
is a multi-planar format with two planes, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_LINEAR
and its format
is a multi-planar format with three planes, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
"text": " If image
was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
external memory handle type, then image
must be bound to memory."
}
]
},
"VkImageSubresource": {
"core": [
{
"vuid": "VUID-VkImageSubresource-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
]
},
"vkGetImageDrmFormatModifierPropertiesEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
."
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkImageDrmFormatModifierPropertiesEXT
structure"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
]
},
"VkImageDrmFormatModifierPropertiesEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkDestroyImage": {
"core": [
{
"vuid": "VUID-vkDestroyImage-image-01000",
"text": " All submitted commands that refer to image
, either directly or via a VkImageView
, must have completed execution"
},
{
"vuid": "VUID-vkDestroyImage-image-01001",
"text": " If VkAllocationCallbacks
were provided when image
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyImage-image-01002",
"text": " If no VkAllocationCallbacks
were provided when image
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyImage-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyImage-image-parameter",
"text": " If image
is not VK_NULL_HANDLE, image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkDestroyImage-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyImage-image-parent",
"text": " If image
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateImageView": {
"core": [
{
"vuid": "VUID-vkCreateImageView-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkImageViewCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateImageView-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateImageView-pView-parameter",
"text": " pView
must be a valid pointer to a VkImageView
handle"
}
]
},
"VkImageViewCreateInfo": {
"core": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01003",
"text": " If image
was not created with VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
then viewType
must not be VK_IMAGE_VIEW_TYPE_CUBE
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
"text": " If the image cubemap arrays feature is not enabled, viewType
must not be VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-None-02273",
"text": " The format features of the resultant image view must contain at least one bit."
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02274",
"text": " If usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, then the format features of the resultant image view must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02275",
"text": " If usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02276",
"text": " If usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02277",
"text": " If usage
contains VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02652",
"text": " If usage
contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, then the image view’s format features must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
"text": " subresourceRange.baseMipLevel
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
"text": " If subresourceRange.levelCount
is not VK_REMAINING_MIP_LEVELS
, subresourceRange.baseMipLevel
+ subresourceRange.levelCount
must be less than or equal to the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01018",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01020",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
"text": " subresourceRange
and viewType
must be compatible with the image, as described in the compatibility table"
},
{
"vuid": "VUID-VkImageViewCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkImageViewASTCDecodeModeEXT, VkImageViewUsageCreateInfo, or VkSamplerYcbcrConversionInfo"
},
{
"vuid": "VUID-VkImageViewCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkImageViewCreateFlagBits values"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
"text": " viewType
must be a valid VkImageViewType value"
},
{
"vuid": "VUID-VkImageViewCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkImageViewCreateInfo-components-parameter",
"text": " components
must be a valid VkComponentMapping
structure"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
"text": " subresourceRange
must be a valid VkImageSubresourceRange
structure"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01005",
"text": " If image
was created with VK_IMAGE_TYPE_3D
but without VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set then viewType
must not be VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01482",
"text": " If image
is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, or viewType
is not VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
, subresourceRange
::baseArrayLayer
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
"text": " If subresourceRange
::layerCount
is not VK_REMAINING_ARRAY_LAYERS
, image
is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, or viewType
is not VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
, subresourceRange
::layerCount
must be non-zero and subresourceRange
::baseArrayLayer
+ subresourceRange
::layerCount
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02724",
"text": " If image
is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, and viewType
is VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
, subresourceRange
::baseArrayLayer
must be less than the depth computed from baseMipLevel
and extent.depth
specified in VkImageCreateInfo when image
was created, according to the formula defined in Image Miplevel Sizing."
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725",
"text": " If subresourceRange
::layerCount
is not VK_REMAINING_ARRAY_LAYERS
, image
is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, and viewType
is VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
, subresourceRange
::layerCount
must be non-zero and subresourceRange
::baseArrayLayer
+ subresourceRange
::layerCount
must be less than or equal to the depth computed from baseMipLevel
and extent.depth
specified in VkImageCreateInfo when image
was created, according to the formula defined in Image Miplevel Sizing."
}
],
"!(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01007",
"text": " image
must have been created with a usage
value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT
, VK_IMAGE_USAGE_STORAGE_BIT
, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
}
],
"!(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02085",
"text": " image
must have been created with a usage
value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT
, VK_IMAGE_USAGE_STORAGE_BIT
, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02569",
"text": " image
must have been created with a usage
value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT
, VK_IMAGE_USAGE_STORAGE_BIT
, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02570",
"text": " image
must have been created with a usage
value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT
, VK_IMAGE_USAGE_STORAGE_BIT
, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, or VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02571",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, subresourceRange.levelCount
must be 1
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-02572",
"text": " If dynamic fragment density map feature is not enabled, flags
must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02573",
"text": " If dynamic fragment density map feature is not enabled and image
was created with usage
containing VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, flags
must not contain any of VK_IMAGE_CREATE_PROTECTED_BIT
, VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
"text": " subresourceRange.baseArrayLayer
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
"text": " If subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, subresourceRange.baseArrayLayer
+ subresourceRange.layerCount
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when image
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01759",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, but without the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01760",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, and if the format
of the image
is not a multi-planar format, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01761",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, but without the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, and if the format
of the image
is not a multi-planar format, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01583",
"text": " If image
was created with the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, format
must be compatible with, or must be an uncompressed format that is size-compatible with, the format
used to create image
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01584",
"text": " If image
was created with the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, the levelCount
and layerCount
members of subresourceRange
must both be 1
."
}
],
"(VK_KHR_image_format_list)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
"text": " If a VkImageFormatListCreateInfoKHR
structure was included in the pNext
chain of the VkImageCreateInfo
struct used when creating image
and the viewFormatCount
field of VkImageFormatListCreateInfoKHR
is not zero then format
must be one of the formats in VkImageFormatListCreateInfoKHR
::pViewFormats
."
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01586",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, if the format
of the image
is a multi-planar format, and if subresourceRange.aspectMask
is one of VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
, then format
must be compatible with the VkFormat for the plane of the image
format
indicated by subresourceRange.aspectMask
, as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01762",
"text": " If image
was not created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, or if the format
of the image
is a multi-planar format and if subresourceRange.aspectMask
is VK_IMAGE_ASPECT_COLOR_BIT
, format
must be identical to the format
used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
"text": " If the pNext
chain contains an instance of VkSamplerYcbcrConversionInfo with a conversion
value other than VK_NULL_HANDLE, all members of components
must have the value VK_COMPONENT_SWIZZLE_IDENTITY
."
}
],
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01019",
"text": " If image
was not created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, format
must be identical to the format
used to create image
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02399",
"text": " If image
has an external format, format
must be VK_FORMAT_UNDEFINED
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02400",
"text": " If image
has an external format, the pNext
chain must contain an instance of VkSamplerYcbcrConversionInfo with a conversion
object created with the same external format as image
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02401",
"text": " If image
has an external format, all members of components
must be VK_COMPONENT_SWIZZLE_IDENTITY
."
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02086",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, viewType
must be VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02087",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, format
must be VK_FORMAT_R8_UINT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02661",
"text": " If the pNext
chain includes an instance of VkImageViewUsageCreateInfo, its usage
member must not include any bits that were not set in the usage
member of the VkImageCreateInfo structure used to create image
."
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02662",
"text": " If the pNext
chain includes an instance of VkImageViewUsageCreateInfo, and image
was not created with an instance of VkImageStencilUsageCreateInfoEXT in the pNext
chain of VkImageCreateInfo, its usage
member must not include any bits that were not set in the usage
member of the VkImageCreateInfo structure used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02663",
"text": " If the pNext
chain includes an instance of VkImageViewUsageCreateInfo, image
was created with an instance of VkImageStencilUsageCreateInfoEXT in the pNext
chain of VkImageCreateInfo, and subResourceRange.aspectMask
includes VK_IMAGE_ASPECT_STENCIL_BIT
, the usage
member of the VkImageViewUsageCreateInfo instance must not include any bits that were not set in the usage
member of the VkImageStencilUsageCreateInfoEXT structure used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02664",
"text": " If the pNext
chain includes an instance of VkImageViewUsageCreateInfo, image
was created with an instance of VkImageStencilUsageCreateInfoEXT in the pNext
chain of VkImageCreateInfo, and subResourceRange.aspectMask
includes bits other than VK_IMAGE_ASPECT_STENCIL_BIT
, the usage
member of the VkImageViewUsageCreateInfo instance must not include any bits that were not set in the usage
member of the VkImageCreateInfo structure used to create image
"
}
]
},
"VkImageViewUsageCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
}
]
},
"VkImageSubresourceRange": {
"core": [
{
"vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
"text": " If levelCount
is not VK_REMAINING_MIP_LEVELS
, it must be greater than 0
"
},
{
"vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
"text": " If layerCount
is not VK_REMAINING_ARRAY_LAYERS
, it must be greater than 0
"
},
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
"text": " If aspectMask
includes VK_IMAGE_ASPECT_COLOR_BIT
, then it must not include any of VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
for any index i
."
}
]
},
"VkComponentMapping": {
"core": [
{
"vuid": "VUID-VkComponentMapping-r-parameter",
"text": " r
must be a valid VkComponentSwizzle value"
},
{
"vuid": "VUID-VkComponentMapping-g-parameter",
"text": " g
must be a valid VkComponentSwizzle value"
},
{
"vuid": "VUID-VkComponentMapping-b-parameter",
"text": " b
must be a valid VkComponentSwizzle value"
},
{
"vuid": "VUID-VkComponentMapping-a-parameter",
"text": " a
must be a valid VkComponentSwizzle value"
}
]
},
"VkImageViewASTCDecodeModeEXT": {
"(VK_EXT_astc_decode_mode)": [
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
"text": " decodeMode
must be one of VK_FORMAT_R16G16B16A16_SFLOAT
, VK_FORMAT_R8G8B8A8_UNORM
, or VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
"text": " If the decodeModeSharedExponent
feature is not enabled, decodeMode
must not be VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
"text": " If decodeMode
is VK_FORMAT_R8G8B8A8_UNORM
the image view must not include blocks using any of the ASTC HDR modes"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-02233",
"text": " format
of the image view must be one of VK_FORMAT_ASTC_4x4_UNORM_BLOCK
, VK_FORMAT_ASTC_4x4_SRGB_BLOCK
, VK_FORMAT_ASTC_5x4_UNORM_BLOCK
, VK_FORMAT_ASTC_5x4_SRGB_BLOCK
, VK_FORMAT_ASTC_5x5_UNORM_BLOCK
, VK_FORMAT_ASTC_5x5_SRGB_BLOCK
, VK_FORMAT_ASTC_6x5_UNORM_BLOCK
, VK_FORMAT_ASTC_6x5_SRGB_BLOCK
, VK_FORMAT_ASTC_6x6_UNORM_BLOCK
, VK_FORMAT_ASTC_6x6_SRGB_BLOCK
, VK_FORMAT_ASTC_8x5_UNORM_BLOCK
, VK_FORMAT_ASTC_8x5_SRGB_BLOCK
, VK_FORMAT_ASTC_8x6_UNORM_BLOCK
, VK_FORMAT_ASTC_8x6_SRGB_BLOCK
, VK_FORMAT_ASTC_8x8_UNORM_BLOCK
, VK_FORMAT_ASTC_8x8_SRGB_BLOCK
, VK_FORMAT_ASTC_10x5_UNORM_BLOCK
, VK_FORMAT_ASTC_10x5_SRGB_BLOCK
, VK_FORMAT_ASTC_10x6_UNORM_BLOCK
, VK_FORMAT_ASTC_10x6_SRGB_BLOCK
, VK_FORMAT_ASTC_10x8_UNORM_BLOCK
, VK_FORMAT_ASTC_10x8_SRGB_BLOCK
, VK_FORMAT_ASTC_10x10_UNORM_BLOCK
, VK_FORMAT_ASTC_10x10_SRGB_BLOCK
, VK_FORMAT_ASTC_12x10_UNORM_BLOCK
, VK_FORMAT_ASTC_12x10_SRGB_BLOCK
, VK_FORMAT_ASTC_12x12_UNORM_BLOCK
, or VK_FORMAT_ASTC_12x12_SRGB_BLOCK
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
"text": " decodeMode
must be a valid VkFormat value"
}
]
},
"vkDestroyImageView": {
"core": [
{
"vuid": "VUID-vkDestroyImageView-imageView-01026",
"text": " All submitted commands that refer to imageView
must have completed execution"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-01027",
"text": " If VkAllocationCallbacks
were provided when imageView
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-01028",
"text": " If no VkAllocationCallbacks
were provided when imageView
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyImageView-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView
handle"
},
{
"vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-parent",
"text": " If imageView
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetImageViewHandleNVX": {
"(VK_NVX_image_view_handle)": [
{
"vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkImageViewHandleInfoNVX
structure"
}
]
},
"VkImageViewHandleInfoNVX": {
"(VK_NVX_image_view_handle)": [
{
"vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
"text": " descriptorType
must be VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
"text": " sampler
must be a valid VkSampler if descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
"text": " If descriptorType is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, the image that imageView
was created from must have been created with the VK_IMAGE_USAGE_SAMPLED_BIT
usage bit set"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
"text": " If descriptorType is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, the image that imageView
was created from must have been created with the VK_IMAGE_USAGE_STORAGE_BIT
usage bit set"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
"text": " imageView
must be a valid VkImageView
handle"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
"text": " If sampler
is not VK_NULL_HANDLE, sampler
must be a valid VkSampler
handle"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
"text": " Both of imageView
, and sampler
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkGetBufferMemoryRequirements": {
"core": [
{
"vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements
structure"
},
{
"vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
"text": " buffer
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetImageMemoryRequirements": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
"text": " image
must not have been created with the VK_IMAGE_CREATE_DISJOINT_BIT
flag set"
}
],
"core": [
{
"vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements
structure"
},
{
"vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetBufferMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkBufferMemoryRequirementsInfo2
structure"
},
{
"vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements2
structure"
}
]
},
"VkBufferMemoryRequirementsInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2
"
},
{
"vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
}
]
},
"vkGetImageMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkImageMemoryRequirementsInfo2
structure"
},
{
"vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements2
structure"
}
]
},
"VkImageMemoryRequirementsInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
"text": " If image
was created with a multi-planar format and the VK_IMAGE_CREATE_DISJOINT_BIT
flag, there must be a VkImagePlaneMemoryRequirementsInfo in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
},
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
"text": " If image
was not created with the VK_IMAGE_CREATE_DISJOINT_BIT
flag, there must not be a VkImagePlaneMemoryRequirementsInfo in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
"text": " If image
was created with VK_IMAGE_CREATE_DISJOINT_BIT
and with VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then there must be a VkImagePlaneMemoryRequirementsInfo in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
},
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
"text": " If image
was created with a single-plane format and with any tiling
other than VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then there must not be a VkImagePlaneMemoryRequirementsInfo in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
"text": " If image
was created with a single-plane format, there must not be a VkImagePlaneMemoryRequirementsInfo in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
"text": " If image
was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
external memory handle type, then image
must be bound to memory."
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2
"
},
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkImagePlaneMemoryRequirementsInfo"
},
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
"text": " image
must be a valid VkImage
handle"
}
]
},
"VkImagePlaneMemoryRequirementsInfo": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
"text": " If the image’s tiling is VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_OPTIMAL
, then planeAspect
must be a single valid format plane for the image. (That is, for a two-plane image planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
, and for a three-plane image planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or VK_IMAGE_ASPECT_PLANE_2_BIT
)."
},
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
"
},
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
"text": " planeAspect
must be a valid VkImageAspectFlagBits value"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
"text": " If the image’s tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then planeAspect
must be a single valid memory plane for the image. (That is, aspectMask
must specify a plane index that is less than the drmFormatModifierPlaneCount
associated with the image’s format
and drmFormatModifier
.)"
}
]
},
"VkMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkMemoryRequirements2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
"
},
{
"vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkMemoryDedicatedRequirements"
}
]
},
"VkMemoryDedicatedRequirements": {
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS
"
}
]
},
"vkBindBufferMemory": {
"core": [
{
"vuid": "VUID-vkBindBufferMemory-buffer-01029",
"text": " buffer
must not already be backed by a memory object"
},
{
"vuid": "VUID-vkBindBufferMemory-buffer-01030",
"text": " buffer
must not have been created with any sparse memory binding flags"
},
{
"vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-vkBindBufferMemory-memory-01035",
"text": " memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements
structure returned from a call to vkGetBufferMemoryRequirements
with buffer
"
},
{
"vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
"text": " memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements
structure returned from a call to vkGetBufferMemoryRequirements
with buffer
"
},
{
"vuid": "VUID-vkBindBufferMemory-size-01037",
"text": " The size
member of the VkMemoryRequirements
structure returned from a call to vkGetBufferMemoryRequirements
with buffer
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-vkBindBufferMemory-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkBindBufferMemory-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkBindBufferMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkBindBufferMemory-buffer-parent",
"text": " buffer
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkBindBufferMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindBufferMemory-buffer-01444",
"text": " If buffer
requires a dedicated allocation(as reported by vkGetBufferMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation for buffer
), memory
must have been created with VkMemoryDedicatedAllocateInfo::buffer
equal to buffer
"
},
{
"vuid": "VUID-vkBindBufferMemory-memory-01508",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::buffer
was not VK_NULL_HANDLE, then buffer
must equal VkMemoryDedicatedAllocateInfo::buffer
, and memoryOffset
must be zero."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkBindBufferMemory-None-01898",
"text": " If buffer was created with the VK_BUFFER_CREATE_PROTECTED_BIT
bit set, the buffer must be bound to a memory object allocated with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
},
{
"vuid": "VUID-vkBindBufferMemory-None-01899",
"text": " If buffer was created with the VK_BUFFER_CREATE_PROTECTED_BIT
bit not set, the buffer must not be bound to a memory object created with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
}
],
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-vkBindBufferMemory-buffer-01038",
"text": " If buffer
was created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must have been created with VkDedicatedAllocationMemoryAllocateInfoNV::buffer
equal to a buffer handle created with identical creation parameters to buffer
and memoryOffset
must be zero"
}
],
"(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindBufferMemory-buffer-01039",
"text": " If buffer
was not created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-vkBindBufferMemory-memory-02726",
"text": " If memory
was allocated with VkExportMemoryAllocateInfo::handleTypes
not equal to 0
, at least one handle type it contained must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created."
},
{
"vuid": "VUID-vkBindBufferMemory-memory-02727",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created."
}
]
},
"vkBindBufferMemory2": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
{
"vuid": "VUID-vkBindBufferMemory2-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
"text": " pBindInfos
must be a valid pointer to an array of bindInfoCount
valid VkBindBufferMemoryInfo
structures"
},
{
"vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
"text": " bindInfoCount
must be greater than 0
"
}
]
},
"VkBindBufferMemoryInfo": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593",
"text": " buffer
must not already be backed by a memory object"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594",
"text": " buffer
must not have been created with any sparse memory binding flags"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-01599",
"text": " memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements
structure returned from a call to vkGetBufferMemoryRequirements
with buffer
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600",
"text": " memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements
structure returned from a call to vkGetBufferMemoryRequirements
with buffer
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-size-01601",
"text": " The size
member of the VkMemoryRequirements
structure returned from a call to vkGetBufferMemoryRequirements
with buffer
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkBindBufferMemoryDeviceGroupInfo"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
"text": " Both of buffer
, and memory
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602",
"text": " If buffer
requires a dedicated allocation(as reported by vkGetBufferMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation for buffer
), memory
must have been created with VkMemoryDedicatedAllocateInfo::buffer
equal to buffer
and memoryOffset
must be zero"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-01900",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::buffer
was not VK_NULL_HANDLE, then buffer
must equal VkMemoryDedicatedAllocateInfo::buffer
and memoryOffset
must be zero."
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603",
"text": " If buffer
was created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must have been created with VkDedicatedAllocationMemoryAllocateInfoNV::buffer
equal to buffer
and memoryOffset
must be zero"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604",
"text": " If buffer
was not created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
"text": " If the pNext
chain includes VkBindBufferMemoryDeviceGroupInfo, all instances of memory
specified by VkBindBufferMemoryDeviceGroupInfo::pDeviceIndices
must have been allocated"
}
]
},
"VkBindBufferMemoryDeviceGroupInfo": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
"text": " deviceIndexCount
must either be zero or equal to the number of physical devices in the logical device"
},
{
"vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
"text": " All elements of pDeviceIndices
must be valid device indices"
},
{
"vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO
"
},
{
"vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
"text": " If deviceIndexCount
is not 0
, pDeviceIndices
must be a valid pointer to an array of deviceIndexCount
uint32_t
values"
}
]
},
"vkBindImageMemory": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkBindImageMemory-image-01608",
"text": " image
must not have been created with the VK_IMAGE_CREATE_DISJOINT_BIT
set."
}
],
"core": [
{
"vuid": "VUID-vkBindImageMemory-image-01044",
"text": " image
must not already be backed by a memory object"
},
{
"vuid": "VUID-vkBindImageMemory-image-01045",
"text": " image
must not have been created with any sparse memory binding flags"
},
{
"vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-vkBindImageMemory-memory-01047",
"text": " memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements
structure returned from a call to vkGetImageMemoryRequirements
with image
"
},
{
"vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
"text": " memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements
structure returned from a call to vkGetImageMemoryRequirements
with image
"
},
{
"vuid": "VUID-vkBindImageMemory-size-01049",
"text": " The size
member of the VkMemoryRequirements
structure returned from a call to vkGetImageMemoryRequirements
with image
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-vkBindImageMemory-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkBindImageMemory-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkBindImageMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-vkBindImageMemory-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkBindImageMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindImageMemory-image-01445",
"text": " If image
requires a dedicated allocation (as reported by vkGetImageMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation for image
), memory
must have been created with VkMemoryDedicatedAllocateInfo::image
equal to image
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-vkBindImageMemory-memory-01509",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero."
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-vkBindImageMemory-memory-02628",
"text": " If the dedicated allocation image aliasing feature is not enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero."
},
{
"vuid": "VUID-vkBindImageMemory-memory-02629",
"text": " If the dedicated allocation image aliasing feature is enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then memoryOffset
must be zero, and image
must be either equal to VkMemoryDedicatedAllocateInfo::image
or an image that was created using the same parameters in VkImageCreateInfo
, with the exception that extent
and arrayLayers
may differ subject to the following restrictions: every dimension in the extent
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and the arrayLayers
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkBindImageMemory-None-01901",
"text": " If image was created with the VK_IMAGE_CREATE_PROTECTED_BIT
bit set, the image must be bound to a memory object allocated with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
},
{
"vuid": "VUID-vkBindImageMemory-None-01902",
"text": " If image was created with the VK_IMAGE_CREATE_PROTECTED_BIT
bit not set, the image must not be bound to a memory object created with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
}
],
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-vkBindImageMemory-image-01050",
"text": " If image
was created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must have been created with VkDedicatedAllocationMemoryAllocateInfoNV::image
equal to an image handle created with identical creation parameters to image
and memoryOffset
must be zero"
}
],
"(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindImageMemory-image-01051",
"text": " If image
was not created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-vkBindImageMemory-memory-02728",
"text": " If memory
was allocated with VkExportMemoryAllocateInfo::handleTypes
not equal to 0
, at least one handle type it contained must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created."
},
{
"vuid": "VUID-vkBindImageMemory-memory-02729",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created."
}
]
},
"vkBindImageMemory2": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
{
"vuid": "VUID-vkBindImageMemory2-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
"text": " pBindInfos
must be a valid pointer to an array of bindInfoCount
valid VkBindImageMemoryInfo
structures"
},
{
"vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
"text": " bindInfoCount
must be greater than 0
"
}
]
},
"VkBindImageMemoryInfo": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01609",
"text": " image
must not already be backed by a memory object"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01610",
"text": " image
must not have been created with any sparse memory binding flags"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkBindImageMemoryDeviceGroupInfo, VkBindImageMemorySwapchainInfoKHR, or VkBindImagePlaneMemoryInfo"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-commonparent",
"text": " Both of image
, and memory
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
"text": " memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements with image
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
"text": " memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements with image
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
"text": " The difference of the size of memory
and memoryOffset
must be greater than or equal to the size
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements with the same image
"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
"text": " If the pNext
chain does not include an instance of the VkBindImagePlaneMemoryInfo structure, memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with image
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
"text": " If the pNext
chain does not include an instance of the VkBindImagePlaneMemoryInfo structure, memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with image
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
"text": " If the pNext
chain does not include an instance of the VkBindImagePlaneMemoryInfo structure, the difference of the size of memory
and memoryOffset
must be greater than or equal to the size
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with the same image
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
"text": " If the pNext
chain includes an instance of the VkBindImagePlaneMemoryInfo structure, image
must have been created with the VK_IMAGE_CREATE_DISJOINT_BIT
bit set."
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
"text": " If the pNext
chain includes an instance of the VkBindImagePlaneMemoryInfo structure, memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with image
and the correct planeAspect
for this plane in the VkImagePlaneMemoryRequirementsInfo structure attached to the VkImageMemoryRequirementsInfo2’s pNext
chain"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
"text": " If the pNext
chain includes an instance of the VkBindImagePlaneMemoryInfo structure, memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with image
and the correct planeAspect
for this plane in the VkImagePlaneMemoryRequirementsInfo structure attached to the VkImageMemoryRequirementsInfo2’s pNext
chain"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
"text": " If the pNext
chain includes an instance of the VkBindImagePlaneMemoryInfo structure, the difference of the size of memory
and memoryOffset
must be greater than or equal to the size
member of the VkMemoryRequirements structure returned from a call to vkGetImageMemoryRequirements2 with the same image
and the correct planeAspect
for this plane in the VkImagePlaneMemoryRequirementsInfo structure attached to the VkImageMemoryRequirementsInfo2’s pNext
chain"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01622",
"text": " If image
requires a dedicated allocation (as reported by vkGetImageMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation for image
), memory
must have been created with VkMemoryDedicatedAllocateInfo::image
equal to image
and memoryOffset
must be zero"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-01903",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero."
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02630",
"text": " If the dedicated allocation image aliasing feature is not enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero."
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02631",
"text": " If the dedicated allocation image aliasing feature is enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included an instance of VkMemoryDedicatedAllocateInfo in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then memoryOffset
must be zero, and image
must be either equal to VkMemoryDedicatedAllocateInfo::image
or an image that was created using the same parameters in VkImageCreateInfo
, with the exception that extent
and arrayLayers
may differ subject to the following restrictions: every dimension in the extent
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and the arrayLayers
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created."
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01623",
"text": " If image
was created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must have been created with VkDedicatedAllocationMemoryAllocateInfoNV::image
equal to image
and memoryOffset
must be zero"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01624",
"text": " If image
was not created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
"text": " memory
must be a valid VkDeviceMemory handle"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
"text": " If the pNext
chain includes VkBindImageMemoryDeviceGroupInfo, all instances of memory
specified by VkBindImageMemoryDeviceGroupInfo::pDeviceIndices
must have been allocated"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
"text": " If the pNext
chain includes VkBindImageMemoryDeviceGroupInfo, and VkBindImageMemoryDeviceGroupInfo::splitInstanceBindRegionCount
is not zero, then image
must have been created with the VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
bit set"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
"text": " If the pNext
chain includes VkBindImageMemoryDeviceGroupInfo, all elements of VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions
must be valid rectangles contained within the dimensions of image
"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
"text": " If the pNext
chain includes VkBindImageMemoryDeviceGroupInfo, the union of the areas of all elements of VkBindImageMemoryDeviceGroupInfo::pSplitInstanceBindRegions
that correspond to the same instance of image
must cover the entire image."
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01630",
"text": " If image
was created with a valid swapchain handle in VkImageSwapchainCreateInfoKHR::swapchain
, then the pNext
chain must include a valid instance of VkBindImageMemorySwapchainInfoKHR"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
"text": " If the pNext
chain includes an instance of VkBindImageMemorySwapchainInfoKHR, memory
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
"text": " If the pNext
chain does not include an instance of VkBindImageMemorySwapchainInfoKHR, memory
must be a valid VkDeviceMemory handle"
}
]
},
"VkBindImageMemoryDeviceGroupInfo": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
"text": " At least one of deviceIndexCount
and splitInstanceBindRegionCount
must be zero."
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
"text": " deviceIndexCount
must either be zero or equal to the number of physical devices in the logical device"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
"text": " All elements of pDeviceIndices
must be valid device indices."
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
"text": " splitInstanceBindRegionCount
must either be zero or equal to the number of physical devices in the logical device squared"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
"text": " Elements of pSplitInstanceBindRegions
that correspond to the same instance of an image must not overlap."
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
"text": " The offset.x
member of any element of pSplitInstanceBindRegions
must be a multiple of the sparse image block width (VkSparseImageFormatProperties
::imageGranularity.width
) of all non-metadata aspects of the image"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
"text": " The offset.y
member of any element of pSplitInstanceBindRegions
must be a multiple of the sparse image block height (VkSparseImageFormatProperties
::imageGranularity.height
) of all non-metadata aspects of the image"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
"text": " The extent.width
member of any element of pSplitInstanceBindRegions
must either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else extent.width
+ offset.x
must equal the width of the image subresource"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
"text": " The extent.height
member of any element of pSplitInstanceBindRegions
must either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else extent.height
offset.y
must equal the width of the image subresource"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
"text": " If deviceIndexCount
is not 0
, pDeviceIndices
must be a valid pointer to an array of deviceIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
"text": " If splitInstanceBindRegionCount
is not 0
, pSplitInstanceBindRegions
must be a valid pointer to an array of splitInstanceBindRegionCount
VkRect2D
structures"
}
]
},
"VkBindImageMemorySwapchainInfoKHR": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
"text": " imageIndex
must be less than the number of images in swapchain
"
},
{
"vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
"
},
{
"vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
}
]
},
"VkBindImagePlaneMemoryInfo": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
"text": " If the image’s tiling is VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_OPTIMAL
, then planeAspect
must be a single valid format plane for the image. (That is, planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
for “_2PLANE
” formats and planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
for “_3PLANE
” formats.)"
},
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-None-01643",
"text": " A single call to vkBindImageMemory2 must bind all or none of the planes of an image (i.e. bindings to all planes of an image must be made in a single vkBindImageMemory2 call), as separate bindings"
},
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
"
},
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
"text": " planeAspect
must be a valid VkImageAspectFlagBits value"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
"text": " If the image’s tiling is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then planeAspect
must be a single valid memory plane for the image. (That is, aspectMask
must specify a plane index that is less than the drmFormatModifierPlaneCount
associated with the image’s format
and drmFormatModifier
.)"
}
]
},
"vkCreateAccelerationStructureNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkAccelerationStructureCreateInfoNV
structure"
},
{
"vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
"text": " pAccelerationStructure
must be a valid pointer to a VkAccelerationStructureNV
handle"
}
]
},
"VkAccelerationStructureCreateInfoNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
"text": " If compactedSize
is not 0
then both info.geometryCount
and info.instanceCount
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
"text": " info
must be a valid VkAccelerationStructureInfoNV
structure"
}
]
},
"VkAccelerationStructureInfoNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
"text": " geometryCount
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxGeometryCount
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
"text": " instanceCount
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxInstanceCount
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
"text": " The total number of triangles in all geometries must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxTriangleCount
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
then geometryCount
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
then instanceCount
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
"text": " If flags
has the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV
bit set, then it must not have the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV
bit set"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
"text": " type
must be a valid VkAccelerationStructureTypeNV value"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkBuildAccelerationStructureFlagBitsNV values"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
"text": " If geometryCount
is not 0
, pGeometries
must be a valid pointer to an array of geometryCount
valid VkGeometryNV
structures"
}
]
},
"VkGeometryNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GEOMETRY_NV
"
},
{
"vuid": "VUID-VkGeometryNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeometryNV-geometryType-parameter",
"text": " geometryType
must be a valid VkGeometryTypeNV value"
},
{
"vuid": "VUID-VkGeometryNV-geometry-parameter",
"text": " geometry
must be a valid VkGeometryDataNV
structure"
},
{
"vuid": "VUID-VkGeometryNV-flags-parameter",
"text": " flags
must be a valid combination of VkGeometryFlagBitsNV values"
}
]
},
"VkGeometryDataNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryDataNV-triangles-parameter",
"text": " triangles
must be a valid VkGeometryTrianglesNV
structure"
},
{
"vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
"text": " aabbs
must be a valid VkGeometryAABBNV
structure"
}
]
},
"VkGeometryTrianglesNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
"text": " vertexOffset
must be less than the size of vertexData
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
"text": " vertexOffset
must be a multiple of the component size of vertexFormat
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
"text": " vertexFormat
must be one of VK_FORMAT_R32G32B32_SFLOAT
, VK_FORMAT_R32G32_SFLOAT
, VK_FORMAT_R16G16B16_SFLOAT
, VK_FORMAT_R16G16_SFLOAT
, VK_FORMAT_R16G16_SNORM
, or VK_FORMAT_R16G16B16_SNORM
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
"text": " indexOffset
must be less than the size of indexData
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
"text": " indexOffset
must be a multiple of the element size of indexType
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
"text": " indexType
must be VK_INDEX_TYPE_UINT16
, VK_INDEX_TYPE_UINT32
, or VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
"text": " indexData
must be VK_NULL_HANDLE if indexType
is VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
"text": " indexData
must be a valid VkBuffer
handle if indexType
is not VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
"text": " indexCount
must be 0
if indexType
is VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
"text": " transformOffset
must be less than the size of transformData
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
"text": " transformOffset
must be a multiple of 16
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
"text": " If vertexData
is not VK_NULL_HANDLE, vertexData
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
"text": " vertexFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
"text": " If indexData
is not VK_NULL_HANDLE, indexData
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
"text": " If transformData
is not VK_NULL_HANDLE, transformData
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-commonparent",
"text": " Each of indexData
, transformData
, and vertexData
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkGeometryAABBNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryAABBNV-offset-02439",
"text": " offset
must be less than the size of aabbData
"
},
{
"vuid": "VUID-VkGeometryAABBNV-offset-02440",
"text": " offset
must be a multiple of 8
"
},
{
"vuid": "VUID-VkGeometryAABBNV-stride-02441",
"text": " stride
must be a multiple of 8
"
},
{
"vuid": "VUID-VkGeometryAABBNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV
"
},
{
"vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
"text": " If aabbData
is not VK_NULL_HANDLE, aabbData
must be a valid VkBuffer
handle"
}
]
},
"vkDestroyAccelerationStructureNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02442",
"text": " All submitted commands that refer to accelerationStructure
must have completed execution"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02443",
"text": " If VkAllocationCallbacks
were provided when accelerationStructure
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02444",
"text": " If no VkAllocationCallbacks
were provided when accelerationStructure
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
"text": " accelerationStructure
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetAccelerationStructureMemoryRequirementsNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkAccelerationStructureMemoryRequirementsInfoNV
structure"
},
{
"vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements2KHR
structure"
}
]
},
"VkAccelerationStructureMemoryRequirementsInfoNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
"text": " type
must be a valid VkAccelerationStructureMemoryRequirementsTypeNV value"
},
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV
handle"
}
]
},
"vkBindAccelerationStructureMemoryNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
"text": " pBindInfos
must be a valid pointer to an array of bindInfoCount
valid VkBindAccelerationStructureMemoryInfoNV
structures"
},
{
"vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
"text": " bindInfoCount
must be greater than 0
"
}
]
},
"VkBindAccelerationStructureMemoryInfoNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-02450",
"text": " accelerationStructure
must not already be backed by a memory object"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-02593",
"text": " memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with accelerationStructure
and type
of VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02594",
"text": " memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with accelerationStructure
and type
of VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-02595",
"text": " The size
member of the VkMemoryRequirements
structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with accelerationStructure
and type
of VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
"text": " If deviceIndexCount
is not 0
, pDeviceIndices
must be a valid pointer to an array of deviceIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
"text": " Both of accelerationStructure
, and memory
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkGetAccelerationStructureHandleNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
"text": " dataSize
must be large enough to contain the result of the query, as described above"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
"text": " accelerationStructure
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateSampler": {
"core": [
{
"vuid": "VUID-vkCreateSampler-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkSamplerCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateSampler-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateSampler-pSampler-parameter",
"text": " pSampler
must be a valid pointer to a VkSampler
handle"
}
]
},
"VkSamplerCreateInfo": {
"core": [
{
"vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
"text": " The absolute value of mipLodBias
must be less than or equal to VkPhysicalDeviceLimits
::maxSamplerLodBias
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
"text": " maxLod
must be greater than or equal to minLod
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
"text": " If the anisotropic sampling feature is not enabled, anisotropyEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
"text": " If anisotropyEnable
is VK_TRUE
, maxAnisotropy
must be between 1.0
and VkPhysicalDeviceLimits
::maxSamplerAnisotropy
, inclusive"
},
{
"vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
"text": " If unnormalizedCoordinates
is VK_TRUE
, minFilter
and magFilter
must be equal"
},
{
"vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
"text": " If unnormalizedCoordinates
is VK_TRUE
, mipmapMode
must be VK_SAMPLER_MIPMAP_MODE_NEAREST
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
"text": " If unnormalizedCoordinates
is VK_TRUE
, minLod
and maxLod
must be zero"
},
{
"vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
"text": " If unnormalizedCoordinates
is VK_TRUE
, addressModeU
and addressModeV
must each be either VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
or VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
"text": " If unnormalizedCoordinates
is VK_TRUE
, anisotropyEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
"text": " If unnormalizedCoordinates
is VK_TRUE
, compareEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
"text": " If any of addressModeU
, addressModeV
or addressModeW
are VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
, borderColor
must be a valid VkBorderColor value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
"text": " If the VK_KHR_sampler_mirror_clamp_to_edge
extension is not enabled, addressModeU
, addressModeV
and addressModeW
must not be VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
"text": " If compareEnable
is VK_TRUE
, compareOp
must be a valid VkCompareOp value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkSamplerReductionModeCreateInfoEXT or VkSamplerYcbcrConversionInfo"
},
{
"vuid": "VUID-VkSamplerCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkSamplerCreateFlagBits values"
},
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
"text": " magFilter
must be a valid VkFilter value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
"text": " minFilter
must be a valid VkFilter value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
"text": " mipmapMode
must be a valid VkSamplerMipmapMode value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
"text": " addressModeU
must be a valid VkSamplerAddressMode value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
"text": " addressModeV
must be a valid VkSamplerAddressMode value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
"text": " addressModeW
must be a valid VkSamplerAddressMode value"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
"text": " If sampler Y’CBCR conversion is enabled and VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
is not set for the format, minFilter
and magFilter
must be equal to the sampler Y’CBCR conversion’s chromaFilter
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
"text": " If sampler Y’CBCR conversion is enabled, addressModeU
, addressModeV
, and addressModeW
must be VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
, anisotropyEnable
must be VK_FALSE
, and unnormalizedCoordinates
must be VK_FALSE
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerCreateInfo-None-01647",
"text": " The sampler reduction mode must be set to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
if sampler Y’CBCR conversion is enabled"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
"text": " If either magFilter
or minFilter
is VK_FILTER_CUBIC_EXT
, anisotropyEnable
must be VK_FALSE
"
}
],
"(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
"text": " If either magFilter
or minFilter
is VK_FILTER_CUBIC_EXT
, the reductionMode
member of VkSamplerReductionModeCreateInfoEXT must be VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
"
}
],
"(VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
"text": " If compareEnable
is VK_TRUE
, the reductionMode
member of VkSamplerReductionModeCreateInfoEXT must be VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02574",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then minFilter
and magFilter
must be equal."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02575",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then mipmapMode
must be VK_SAMPLER_MIPMAP_MODE_NEAREST
."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02576",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then minLod
and maxLod
must be zero."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02577",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then addressModeU
and addressModeV
must each be either VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
or VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02578",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then anisotropyEnable
must be VK_FALSE
."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02579",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then compareEnable
must be VK_FALSE
."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02580",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then unnormalizedCoordinates
must be VK_FALSE
."
}
]
},
"VkSamplerReductionModeCreateInfoEXT": {
"(VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter",
"text": " reductionMode
must be a valid VkSamplerReductionModeEXT value"
}
]
},
"vkDestroySampler": {
"core": [
{
"vuid": "VUID-vkDestroySampler-sampler-01082",
"text": " All submitted commands that refer to sampler
must have completed execution"
},
{
"vuid": "VUID-vkDestroySampler-sampler-01083",
"text": " If VkAllocationCallbacks
were provided when sampler
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroySampler-sampler-01084",
"text": " If no VkAllocationCallbacks
were provided when sampler
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroySampler-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroySampler-sampler-parameter",
"text": " If sampler
is not VK_NULL_HANDLE, sampler
must be a valid VkSampler
handle"
},
{
"vuid": "VUID-vkDestroySampler-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroySampler-sampler-parent",
"text": " If sampler
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkSamplerYcbcrConversionInfo": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
"text": " conversion
must be a valid VkSamplerYcbcrConversion
handle"
}
]
},
"vkCreateSamplerYcbcrConversion": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
"text": " The sampler Y’CBCR conversion feature must be enabled"
},
{
"vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkSamplerYcbcrConversionCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
"text": " pYcbcrConversion
must be a valid pointer to a VkSamplerYcbcrConversion
handle"
}
]
},
"VkSamplerYcbcrConversionCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649",
"text": " format
must not be VK_FORMAT_UNDEFINED
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
"text": " If an external format conversion is being created, format
must be VK_FORMAT_UNDEFINED
, otherwise it must not be VK_FORMAT_UNDEFINED
."
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
"text": " format
must support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
or VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
"text": " If the format does not support VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
, xChromaOffset
and yChromaOffset
must not be VK_CHROMA_LOCATION_COSITED_EVEN
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
"text": " If the format does not support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
, xChromaOffset
and yChromaOffset
must not be VK_CHROMA_LOCATION_MIDPOINT
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01653",
"text": " format
must represent unsigned normalized values (i.e. the format must be a UNORM
format)"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
"text": " If the format has a _422
or _420
suffix, then components.g
must be VK_COMPONENT_SWIZZLE_IDENTITY
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
"text": " If the format has a _422
or _420
suffix, then components.a
must be VK_COMPONENT_SWIZZLE_IDENTITY
, VK_COMPONENT_SWIZZLE_ONE
, or VK_COMPONENT_SWIZZLE_ZERO
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
"text": " If the format has a _422
or _420
suffix, then components.r
must be VK_COMPONENT_SWIZZLE_IDENTITY
or VK_COMPONENT_SWIZZLE_B
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
"text": " If the format has a _422
or _420
suffix, then components.b
must be VK_COMPONENT_SWIZZLE_IDENTITY
or VK_COMPONENT_SWIZZLE_R
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
"text": " If the format has a _422
or _420
suffix, and if either components.r
or components.b
is VK_COMPONENT_SWIZZLE_IDENTITY
, both values must be VK_COMPONENT_SWIZZLE_IDENTITY
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
"text": " If ycbcrModel
is not VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY
, then components.r
, components.g
, and components.b
must correspond to channels of the format
; that is, components.r
, components.g
, and components.b
must not be VK_COMPONENT_SWIZZLE_ZERO
or VK_COMPONENT_SWIZZLE_ONE
, and must not correspond to a channel which contains zero or one as a consequence of conversion to RGBA"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748",
"text": " If ycbcrRange
is VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
then the R, G and B channels obtained by applying the component
swizzle to format
must each have a bit-depth greater than or equal to 8."
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
"text": " If the format does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
, forceExplicitReconstruction
must be FALSE"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
"text": " If the format does not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
, chromaFilter
must be VK_FILTER_NEAREST
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkExternalFormatANDROID"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
"text": " ycbcrModel
must be a valid VkSamplerYcbcrModelConversion value"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
"text": " ycbcrRange
must be a valid VkSamplerYcbcrRange value"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
"text": " components
must be a valid VkComponentMapping
structure"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
"text": " xChromaOffset
must be a valid VkChromaLocation value"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
"text": " yChromaOffset
must be a valid VkChromaLocation value"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
"text": " chromaFilter
must be a valid VkFilter value"
}
]
},
"vkDestroySamplerYcbcrConversion": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
"text": " If ycbcrConversion
is not VK_NULL_HANDLE, ycbcrConversion
must be a valid VkSamplerYcbcrConversion
handle"
},
{
"vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
"text": " If ycbcrConversion
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateDescriptorSetLayout": {
"core": [
{
"vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDescriptorSetLayoutCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
"text": " pSetLayout
must be a valid pointer to a VkDescriptorSetLayout
handle"
}
]
},
"VkDescriptorSetLayoutCreateInfo": {
"core": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
"text": " The VkDescriptorSetLayoutBinding::binding
members of the elements of the pBindings
array must each have different values."
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDescriptorSetLayoutBindingFlagsCreateInfoEXT"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkDescriptorSetLayoutCreateFlagBits values"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
"text": " If bindingCount
is not 0
, pBindings
must be a valid pointer to an array of bindingCount
valid VkDescriptorSetLayoutBinding
structures"
}
],
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all elements of pBindings
must not have a descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then the total number of elements of all bindings must be less than or equal to VkPhysicalDevicePushDescriptorPropertiesKHR::maxPushDescriptors
"
}
],
"(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all elements of pBindings
must not have a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
"
}
],
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
"text": " If any binding has the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
bit set, flags
must include VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
"text": " If any binding has the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
bit set, then all bindings must not have descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
}
]
},
"VkDescriptorSetLayoutBinding": {
"core": [
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLER
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and descriptorCount
is not 0
and pImmutableSamplers
is not NULL
, pImmutableSamplers
must be a valid pointer to an array of descriptorCount
valid VkSampler
handles"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
"text": " If descriptorCount
is not 0
, stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
and descriptorCount
is not 0
, then stageFlags
must be 0
or VK_SHADER_STAGE_FRAGMENT_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
}
],
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
then descriptorCount
must be a multiple of 4
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
then descriptorCount
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxInlineUniformBlockSize
"
}
]
},
"VkDescriptorSetLayoutBindingFlagsCreateInfoEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002",
"text": " If bindingCount
is not zero, bindingCount
must equal VkDescriptorSetLayoutCreateInfo::bindingCount
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004",
"text": " If an element of pBindingFlags
includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
, then all other elements of VkDescriptorSetLayoutCreateInfo::pBindings
must have a smaller value of binding
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingUniformBufferUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingSampledImageUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_SAMPLER
, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, or VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingStorageImageUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingStorageBufferUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingUniformTexelBufferUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingStorageTexelBufferUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011",
"text": " All bindings with descriptor type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingUpdateUnusedWhilePending
is not enabled, all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingPartiallyBound
is not enabled, all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014",
"text": " If VkPhysicalDeviceDescriptorIndexingFeaturesEXT::descriptorBindingVariableDescriptorCount
is not enabled, all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015",
"text": " If an element of pBindingFlags
includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
, that element’s descriptorType
must not be VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-parameter",
"text": " If bindingCount
is not 0
, and pBindingFlags
is not NULL
, pBindingFlags
must be a valid pointer to an array of bindingCount
valid combinations of VkDescriptorBindingFlagBitsEXT values"
}
],
"(VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003",
"text": " If VkDescriptorSetLayoutCreateInfo::flags
includes VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
, VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
, or VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT
"
}
],
"(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
"text": " If VkPhysicalDeviceInlineUniformBlockFeaturesEXT::descriptorBindingInlineUniformBlockUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
"
}
]
},
"vkGetDescriptorSetLayoutSupport": {
"(VK_VERSION_1_1,VK_KHR_maintenance3)": [
{
"vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDescriptorSetLayoutCreateInfo
structure"
},
{
"vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
"text": " pSupport
must be a valid pointer to a VkDescriptorSetLayoutSupport
structure"
}
]
},
"VkDescriptorSetLayoutSupport": {
"(VK_VERSION_1_1,VK_KHR_maintenance3)": [
{
"vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDescriptorSetVariableDescriptorCountLayoutSupportEXT"
}
]
},
"VkDescriptorSetVariableDescriptorCountLayoutSupportEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupportEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT
"
}
]
},
"vkDestroyDescriptorSetLayout": {
"core": [
{
"vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
"text": " If VkAllocationCallbacks
were provided when descriptorSetLayout
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
"text": " If no VkAllocationCallbacks
were provided when descriptorSetLayout
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
"text": " If descriptorSetLayout
is not VK_NULL_HANDLE, descriptorSetLayout
must be a valid VkDescriptorSetLayout
handle"
},
{
"vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
"text": " If descriptorSetLayout
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreatePipelineLayout": {
"core": [
{
"vuid": "VUID-vkCreatePipelineLayout-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkPipelineLayoutCreateInfo
structure"
},
{
"vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
"text": " pPipelineLayout
must be a valid pointer to a VkPipelineLayout
handle"
}
]
},
"VkPipelineLayoutCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
"text": " setLayoutCount
must be less than or equal to VkPhysicalDeviceLimits
::maxBoundDescriptorSets
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
"text": " Any two elements of pPushConstantRanges
must not include the same stage in stageFlags
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
"text": " If setLayoutCount
is not 0
, pSetLayouts
must be a valid pointer to an array of setLayoutCount
valid VkDescriptorSetLayout
handles"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
"text": " If pushConstantRangeCount
is not 0
, pPushConstantRanges
must be a valid pointer to an array of pushConstantRangeCount
valid VkPushConstantRange
structures"
}
],
"!(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_SAMPLER
and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible to any shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorSamplers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
and VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible to any shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorUniformBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
and VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible to any shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorStorageBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible to any shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorSampledImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, and VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible to any shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorStorageImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorInputAttachments
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_SAMPLER
and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetSamplers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetUniformBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetUniformBuffersDynamic
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetStorageBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetStorageBuffersDynamic
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetSampledImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, and VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetStorageImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetInputAttachments
"
}
],
"!(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxPerStageDescriptorInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxDescriptorSetInlineUniformBlocks
"
}
],
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_SAMPLER
and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorSamplers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
and VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorUniformBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
and VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorStorageBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorSampledImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, and VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorStorageImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorInputAttachments
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_SAMPLER
and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindSamplers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
and VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindUniformBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
and VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindStorageBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindSampledImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, and VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindStorageImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindInputAttachments
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_SAMPLER
and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetSamplers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetUniformBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetUniformBuffersDynamic
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetStorageBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetStorageBuffersDynamic
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetSampledImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, and VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetStorageImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxDescriptorSetInputAttachments
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_SAMPLER
and VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindSamplers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindUniformBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindUniformBuffersDynamic
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindStorageBuffers
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindStorageBuffersDynamic
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, and VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindSampledImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, and VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindStorageImages
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceDescriptorIndexingPropertiesEXT
::maxDescriptorSetUpdateAfterBindInputAttachments
"
}
],
"(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
"text": " The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxPerStageDescriptorInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
"text": " The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxDescriptorSetInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockPropertiesEXT
::maxDescriptorSetUpdateAfterBindInlineUniformBlocks
"
}
],
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
"text": " pSetLayouts
must not contain more than one descriptor set layout that was created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
set"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxDescriptorSetAccelerationStructures
"
}
]
},
"VkPushConstantRange": {
"core": [
{
"vuid": "VUID-VkPushConstantRange-offset-00294",
"text": " offset
must be less than VkPhysicalDeviceLimits
::maxPushConstantsSize
"
},
{
"vuid": "VUID-VkPushConstantRange-offset-00295",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-VkPushConstantRange-size-00296",
"text": " size
must be greater than 0
"
},
{
"vuid": "VUID-VkPushConstantRange-size-00297",
"text": " size
must be a multiple of 4
"
},
{
"vuid": "VUID-VkPushConstantRange-size-00298",
"text": " size
must be less than or equal to VkPhysicalDeviceLimits
::maxPushConstantsSize
minus offset
"
},
{
"vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
"text": " stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
"text": " stageFlags
must not be 0
"
}
]
},
"vkDestroyPipelineLayout": {
"core": [
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
"text": " If VkAllocationCallbacks
were provided when pipelineLayout
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
"text": " If no VkAllocationCallbacks
were provided when pipelineLayout
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
"text": " pipelineLayout
must not have been passed to any vkCmd*
command for any command buffers that are still in the recording state when vkDestroyPipelineLayout
is called"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
"text": " If pipelineLayout
is not VK_NULL_HANDLE, pipelineLayout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
"text": " If pipelineLayout
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateDescriptorPool": {
"core": [
{
"vuid": "VUID-vkCreateDescriptorPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDescriptorPoolCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
"text": " pDescriptorPool
must be a valid pointer to a VkDescriptorPool
handle"
}
]
},
"VkDescriptorPoolCreateInfo": {
"core": [
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
"text": " maxSets
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDescriptorPoolInlineUniformBlockCreateInfoEXT"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkDescriptorPoolCreateFlagBits values"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
"text": " pPoolSizes
must be a valid pointer to an array of poolSizeCount
valid VkDescriptorPoolSize
structures"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
"text": " poolSizeCount
must be greater than 0
"
}
]
},
"VkDescriptorPoolInlineUniformBlockCreateInfoEXT": {
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT
"
}
]
},
"VkDescriptorPoolSize": {
"core": [
{
"vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
"text": " descriptorCount
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorPoolSize-type-parameter",
"text": " type
must be a valid VkDescriptorType value"
}
],
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorPoolSize-type-02218",
"text": " If type
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
then descriptorCount
must be a multiple of 4
"
}
]
},
"vkDestroyDescriptorPool": {
"core": [
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
"text": " All submitted commands that refer to descriptorPool
(via any allocated descriptor sets) must have completed execution"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
"text": " If VkAllocationCallbacks
were provided when descriptorPool
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
"text": " If no VkAllocationCallbacks
were provided when descriptorPool
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
"text": " If descriptorPool
is not VK_NULL_HANDLE, descriptorPool
must be a valid VkDescriptorPool
handle"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
"text": " If descriptorPool
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkAllocateDescriptorSets": {
"core": [
{
"vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
"text": " pAllocateInfo
must be a valid pointer to a valid VkDescriptorSetAllocateInfo
structure"
},
{
"vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
"text": " pDescriptorSets
must be a valid pointer to an array of pAllocateInfo
::descriptorSetCount VkDescriptorSet
handles"
}
]
},
"VkDescriptorSetAllocateInfo": {
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
"text": " descriptorSetCount
must not be greater than the number of sets that are currently available for allocation in descriptorPool
"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
"text": " descriptorPool
must have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
}
],
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
"text": " Each element of pSetLayouts
must not have been created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
set"
}
],
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
"text": " If any element of pSetLayouts
was created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
bit set, descriptorPool
must have been created with the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set"
}
],
"core": [
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDescriptorSetVariableDescriptorCountAllocateInfoEXT"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
"text": " descriptorPool
must be a valid VkDescriptorPool
handle"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
"text": " pSetLayouts
must be a valid pointer to an array of descriptorSetCount
valid VkDescriptorSetLayout
handles"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
"text": " descriptorSetCount
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
"text": " Both of descriptorPool
, and the elements of pSetLayouts
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkDescriptorSetVariableDescriptorCountAllocateInfoEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045",
"text": " If descriptorSetCount
is not zero, descriptorSetCount
must equal VkDescriptorSetAllocateInfo::descriptorSetCount
"
},
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046",
"text": " If VkDescriptorSetAllocateInfo::pSetLayouts
[i] has a variable descriptor count binding, then pDescriptorCounts
[i] must be less than or equal to the descriptor count specified for that binding when the descriptor set layout was created."
},
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter",
"text": " If descriptorSetCount
is not 0
, pDescriptorCounts
must be a valid pointer to an array of descriptorSetCount
uint32_t
values"
}
]
},
"vkFreeDescriptorSets": {
"core": [
{
"vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
"text": " All submitted commands that refer to any element of pDescriptorSets
must have completed execution"
},
{
"vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
"text": " pDescriptorSets
must be a valid pointer to an array of descriptorSetCount
VkDescriptorSet
handles, each element of which must either be a valid handle or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
"text": " Each valid handle in pDescriptorSets
must have been allocated from descriptorPool
"
},
{
"vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
"text": " descriptorPool
must have been created with the VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
flag"
},
{
"vuid": "VUID-vkFreeDescriptorSets-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
"text": " descriptorPool
must be a valid VkDescriptorPool
handle"
},
{
"vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
"text": " descriptorSetCount
must be greater than 0
"
},
{
"vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
"text": " descriptorPool
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
"text": " Each element of pDescriptorSets
that is a valid handle must have been created, allocated, or retrieved from descriptorPool
"
}
]
},
"vkResetDescriptorPool": {
"core": [
{
"vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
"text": " All uses of descriptorPool
(via any allocated descriptor sets) must have completed execution"
},
{
"vuid": "VUID-vkResetDescriptorPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
"text": " descriptorPool
must be a valid VkDescriptorPool
handle"
},
{
"vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
"text": " descriptorPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkUpdateDescriptorSets": {
"!(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
"text": " The dstSet
member of each element of pDescriptorWrites
or pDescriptorCopies
must not be used by any command that was recorded to a command buffer which is in the pending state."
}
],
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-None-03047",
"text": " Descriptor bindings updated by this command which were created without the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT
or VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT
bits set must not be used by any command that was recorded to a command buffer which is in the pending state."
}
],
"core": [
{
"vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
"text": " If descriptorWriteCount
is not 0
, pDescriptorWrites
must be a valid pointer to an array of descriptorWriteCount
valid VkWriteDescriptorSet
structures"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
"text": " If descriptorCopyCount
is not 0
, pDescriptorCopies
must be a valid pointer to an array of descriptorCopyCount
valid VkCopyDescriptorSet
structures"
}
]
},
"VkWriteDescriptorSet": {
"core": [
{
"vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
"text": " dstBinding
must be less than or equal to the maximum value of binding
of all VkDescriptorSetLayoutBinding structures specified when dstSet
’s descriptor set layout was created"
},
{
"vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
"text": " dstBinding
must be a binding with a non-zero descriptorCount
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
"text": " All consecutive bindings updated via a single VkWriteDescriptorSet
structure, except those with a descriptorCount
of zero, must have identical descriptorType
and stageFlags
."
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
"text": " All consecutive bindings updated via a single VkWriteDescriptorSet
structure, except those with a descriptorCount
of zero, must all either use immutable samplers or must all not use immutable samplers."
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
"text": " descriptorType
must match the type of dstBinding
within dstSet
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
"text": " dstSet
must be a valid VkDescriptorSet handle"
},
{
"vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
"text": " The sum of dstArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding specified by dstBinding
, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLER
, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, pImageInfo
must be a valid pointer to an array of descriptorCount
valid VkDescriptorImageInfo
structures"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00323",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, pTexelBufferView
must be a valid pointer to an array of descriptorCount
valid VkBufferView
handles"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, pBufferInfo
must be a valid pointer to an array of descriptorCount
valid VkDescriptorBufferInfo
structures"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLER
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and dstSet
was not allocated with a layout that included immutable samplers for dstBinding
with descriptorType
, the sampler
member of each element of pImageInfo
must be a valid VkSampler
object"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00326",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, the imageView
and imageLayout
members of each element of pImageInfo
must be a valid VkImageView
and VkImageLayout, respectively"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, then the imageView
member of each pImageInfo
element must have been created without a VkSamplerYcbcrConversionInfo
structure in its pNext
chain"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and if any element of pImageInfo
has a imageView
member that was created with a VkSamplerYcbcrConversionInfo
structure in its pNext
chain, then dstSet
must have been allocated with a layout that included immutable samplers for dstBinding
, and the corresponding immutable sampler must have been created with an identically defined VkSamplerYcbcrConversionInfo
object"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and dstSet
was allocated with a layout that included immutable samplers for dstBinding
, then the imageView
member of each element of pImageInfo
which corresponds to an immutable sampler that enables sampler Y’CBCR conversion must have been created with a VkSamplerYcbcrConversionInfo
structure in its pNext
chain with an identically defined VkSamplerYcbcrConversionInfo
to the corresponding immutable sampler"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, for each descriptor that will be accessed via load or store operations the imageLayout
member for corresponding elements of pImageInfo
must be VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, the offset
member of each element of pBufferInfo
must be a multiple of VkPhysicalDeviceLimits
::minUniformBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, the offset
member of each element of pBufferInfo
must be a multiple of VkPhysicalDeviceLimits
::minStorageBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
, or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, and the buffer
member of any element of pBufferInfo
is the handle of a non-sparse buffer, then that buffer must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, the buffer
member of each element of pBufferInfo
must have been created with VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, the buffer
member of each element of pBufferInfo
must have been created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
or VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
, the range
member of each element of pBufferInfo
, or the effective range if range
is VK_WHOLE_SIZE
, must be less than or equal to VkPhysicalDeviceLimits
::maxUniformBufferRange
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
, the range
member of each element of pBufferInfo
, or the effective range if range
is VK_WHOLE_SIZE
, must be less than or equal to VkPhysicalDeviceLimits
::maxStorageBufferRange
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
, the VkBuffer
that each element of pTexelBufferView
was created from must have been created with VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, the VkBuffer
that each element of pTexelBufferView
was created from must have been created with VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, the imageView
member of each element of pImageInfo
must have been created with the identity swizzle"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, the imageView
member of each element of pImageInfo
must have been created with VK_IMAGE_USAGE_SAMPLED_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, the imageLayout
member of each element of pImageInfo
must be a member of the list given in Sampled Image or Combined Image Sampler, corresponding to its type"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, the imageView
member of each element of pImageInfo
must have been created with VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, the imageView
member of each element of pImageInfo
must have been created with VK_IMAGE_USAGE_STORAGE_BIT
set"
},
{
"vuid": "VUID-VkWriteDescriptorSet-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkWriteDescriptorSetAccelerationStructureNV or VkWriteDescriptorSetInlineUniformBlockEXT"
},
{
"vuid": "VUID-VkWriteDescriptorSet-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
"text": " descriptorCount
must be greater than 0
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-commonparent",
"text": " Both of dstSet
, and the elements of pTexelBufferView
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, dstArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, descriptorCount
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, the pNext
chain must include a VkWriteDescriptorSetInlineUniformBlockEXT structure whose dataSize
member equals descriptorCount
"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
, the pNext
chain must include a VkWriteDescriptorSetAccelerationStructureNV structure whose accelerationStructureCount
member equals descriptorCount
"
}
],
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
"text": " All consecutive bindings updated via a single VkWriteDescriptorSet
structure, except those with a descriptorCount
of zero, must have identical VkDescriptorBindingFlagBitsEXT."
}
]
},
"VkDescriptorBufferInfo": {
"core": [
{
"vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
"text": " offset
must be less than the size of buffer
"
},
{
"vuid": "VUID-VkDescriptorBufferInfo-range-00341",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorBufferInfo-range-00342",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
must be less than or equal to the size of buffer
minus offset
"
},
{
"vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
}
]
},
"VkDescriptorImageInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
"text": " imageView
must not be 2D or 2D array image view created from a 3D image"
}
],
"core": [
{
"vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
"text": " If imageView
is created from a depth/stencil image, the aspectMask
used to create the imageView
must include either VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
but not both."
},
{
"vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
"text": " imageLayout
must match the actual VkImageLayout of each subresource accessible from imageView
at the time this descriptor is accessed as defined by the image layout matching rules"
},
{
"vuid": "VUID-VkDescriptorImageInfo-commonparent",
"text": " Both of imageView
, and sampler
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
"text": " If sampler
is used and the VkFormat of the image is a multi-planar format, the image must have been created with VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, and the aspectMask
of the imageView
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or (for three-plane formats only) VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
]
},
"VkWriteDescriptorSetInlineUniformBlockEXT": {
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222",
"text": " dataSize
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT
"
},
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
}
]
},
"VkWriteDescriptorSetAccelerationStructureNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-02236",
"text": " accelerationStructureCount
must be equal to descriptorCount
in the extended structure"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid VkAccelerationStructureNV
handles"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
}
]
},
"VkCopyDescriptorSet": {
"core": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
"text": " srcBinding
must be a valid binding within srcSet
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
"text": " The sum of srcArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding specified by srcBinding
, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
"text": " dstBinding
must be a valid binding within dstSet
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
"text": " The sum of dstArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding specified by dstBinding
, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
"text": " The type of dstBinding
within dstSet
must be equal to the type of srcBinding
within srcSet
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
"text": " If srcSet
is equal to dstSet
, then the source and destination ranges of descriptors must not overlap, where the ranges may include array elements from consecutive bindings as described by consecutive binding updates"
},
{
"vuid": "VUID-VkCopyDescriptorSet-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
"text": " srcSet
must be a valid VkDescriptorSet
handle"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
"text": " dstSet
must be a valid VkDescriptorSet
handle"
},
{
"vuid": "VUID-VkCopyDescriptorSet-commonparent",
"text": " Both of dstSet
, and srcSet
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
"text": " If the descriptor type of the descriptor set binding specified by srcBinding
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, srcArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
"text": " If the descriptor type of the descriptor set binding specified by dstBinding
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, dstArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
"text": " If the descriptor type of the descriptor set binding specified by either srcBinding
or dstBinding
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, descriptorCount
must be an integer multiple of 4
"
}
],
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
"text": " If srcSet
’s layout was created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set, then dstSet
’s layout must also have been created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
"text": " If srcSet
’s layout was created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set, then dstSet
’s layout must also have been created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT
flag set"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
"text": " If the descriptor pool from which srcSet
was allocated was created with the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set, then the descriptor pool from which dstSet
was allocated must also have been created with the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
"text": " If the descriptor pool from which srcSet
was allocated was created without the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set, then the descriptor pool from which dstSet
was allocated must also have been created without the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT
flag set"
}
]
},
"vkCreateDescriptorUpdateTemplate": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDescriptorUpdateTemplateCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
"text": " pDescriptorUpdateTemplate
must be a valid pointer to a VkDescriptorUpdateTemplate
handle"
}
]
},
"VkDescriptorUpdateTemplateCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
"text": " If templateType
is VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
, descriptorSetLayout
must be a valid VkDescriptorSetLayout
handle"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
"text": " pDescriptorUpdateEntries
must be a valid pointer to an array of descriptorUpdateEntryCount
valid VkDescriptorUpdateTemplateEntry
structures"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
"text": " templateType
must be a valid VkDescriptorUpdateTemplateType value"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter",
"text": " If descriptorSetLayout
is not VK_NULL_HANDLE, descriptorSetLayout
must be a valid VkDescriptorSetLayout
handle"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
"text": " descriptorUpdateEntryCount
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
"text": " Both of descriptorSetLayout
, and pipelineLayout
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
"text": " If templateType
is VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
, pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
"text": " If templateType
is VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
, pipelineLayout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
"text": " If templateType
is VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
, set
must be the unique set number in the pipeline layout that uses a descriptor set layout that was created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
"
}
]
},
"VkDescriptorUpdateTemplateEntry": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
"text": " dstBinding
must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors."
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
"text": " dstArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
}
],
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
"text": " If descriptor
type is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, dstArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
"text": " If descriptor
type is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT
, descriptorCount
must be an integer multiple of 4
"
}
]
},
"vkDestroyDescriptorUpdateTemplate": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
"text": " If VkAllocationCallbacks
were provided when descriptorSetLayout
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
"text": " If no VkAllocationCallbacks
were provided when descriptorSetLayout
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
"text": " If descriptorUpdateTemplate
is not VK_NULL_HANDLE, descriptorUpdateTemplate
must be a valid VkDescriptorUpdateTemplate
handle"
},
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
"text": " If descriptorUpdateTemplate
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkUpdateDescriptorSetWithTemplate": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
"text": " pData
must be a valid pointer to a memory that contains one or more valid instances of VkDescriptorImageInfo, VkDescriptorBufferInfo, or VkBufferView in a layout defined by descriptorUpdateTemplate
when it was created with vkCreateDescriptorUpdateTemplate"
},
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
"text": " descriptorSet
must be a valid VkDescriptorSet
handle"
},
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
"text": " descriptorUpdateTemplate
must be a valid VkDescriptorUpdateTemplate
handle"
},
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
"text": " descriptorUpdateTemplate
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdBindDescriptorSets": {
"core": [
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
"text": " Each element of pDescriptorSets
must have been allocated with a VkDescriptorSetLayout
that matches (is the same as, or identically defined as) the VkDescriptorSetLayout
at set n in layout
, where n is the sum of firstSet
and the index into pDescriptorSets
"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
"text": " dynamicOffsetCount
must be equal to the total number of dynamic descriptors in pDescriptorSets
"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
"text": " The sum of firstSet
and descriptorSetCount
must be less than or equal to VkPipelineLayoutCreateInfo
::setLayoutCount
provided when layout
was created"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
"text": " pipelineBindPoint
must be supported by the commandBuffer
’s parent VkCommandPool
’s queue family"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
"text": " Each element of pDynamicOffsets
which corresponds to a descriptor binding with type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
must be a multiple of VkPhysicalDeviceLimits
::minUniformBufferOffsetAlignment
"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
"text": " Each element of pDynamicOffsets
which corresponds to a descriptor binding with type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
must be a multiple of VkPhysicalDeviceLimits
::minStorageBufferOffsetAlignment
"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
"text": " For each dynamic uniform or storage buffer binding in pDescriptorSets
, the sum of the effective offset, as defined above, and the range of the binding must be less than or equal to the size of the buffer"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
"text": " pDescriptorSets
must be a valid pointer to an array of descriptorSetCount
valid VkDescriptorSet
handles"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
"text": " If dynamicOffsetCount
is not 0
, pDynamicOffsets
must be a valid pointer to an array of dynamicOffsetCount
uint32_t
values"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
"text": " descriptorSetCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
"text": " Each of commandBuffer
, layout
, and the elements of pDescriptorSets
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdPushDescriptorSetKHR": {
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
"text": " pipelineBindPoint
must be supported by the commandBuffer
’s parent VkCommandPool
’s queue family"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
"text": " set
must be less than VkPipelineLayoutCreateInfo
::setLayoutCount
provided when layout
was created"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
"text": " set
must be the unique set number in the pipeline layout that uses a descriptor set layout that was created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
"text": " pDescriptorWrites
must be a valid pointer to an array of descriptorWriteCount
valid VkWriteDescriptorSet
structures"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
"text": " descriptorWriteCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
"text": " Both of commandBuffer
, and layout
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdPushDescriptorSetWithTemplateKHR": {
"(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
"text": " The pipelineBindPoint
specified during the creation of the descriptor update template must be supported by the commandBuffer
’s parent VkCommandPool
’s queue family"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
"text": " pData
must be a valid pointer to a memory that contains one or more valid instances of VkDescriptorImageInfo, VkDescriptorBufferInfo, or VkBufferView in a layout defined by descriptorUpdateTemplate
when it was created with vkCreateDescriptorUpdateTemplateKHR"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
"text": " descriptorUpdateTemplate
must be a valid VkDescriptorUpdateTemplate
handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
"text": " Each of commandBuffer
, descriptorUpdateTemplate
, and layout
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdPushConstants": {
"core": [
{
"vuid": "VUID-vkCmdPushConstants-offset-01795",
"text": " For each byte in the range specified by offset
and size
and for each shader stage in stageFlags
, there must be a push constant range in layout
that includes that byte and that stage"
},
{
"vuid": "VUID-vkCmdPushConstants-offset-01796",
"text": " For each byte in the range specified by offset
and size
and for each push constant range that overlaps that byte, stageFlags
must include all stages in that push constant range’s VkPushConstantRange::stageFlags
"
},
{
"vuid": "VUID-vkCmdPushConstants-offset-00368",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdPushConstants-size-00369",
"text": " size
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdPushConstants-offset-00370",
"text": " offset
must be less than VkPhysicalDeviceLimits
::maxPushConstantsSize
"
},
{
"vuid": "VUID-vkCmdPushConstants-size-00371",
"text": " size
must be less than or equal to VkPhysicalDeviceLimits
::maxPushConstantsSize
minus offset
"
},
{
"vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdPushConstants-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
"text": " stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
"text": " stageFlags
must not be 0
"
},
{
"vuid": "VUID-vkCmdPushConstants-pValues-parameter",
"text": " pValues
must be a valid pointer to an array of size
bytes"
},
{
"vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPushConstants-size-arraylength",
"text": " size
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdPushConstants-commonparent",
"text": " Both of commandBuffer
, and layout
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkGetBufferDeviceAddressEXT": {
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-vkGetBufferDeviceAddressEXT-None-02598",
"text": " The bufferDeviceAddress feature must be enabled"
},
{
"vuid": "VUID-vkGetBufferDeviceAddressEXT-device-02599",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled"
},
{
"vuid": "VUID-vkGetBufferDeviceAddressEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetBufferDeviceAddressEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkBufferDeviceAddressInfoEXT
structure"
}
]
},
"VkBufferDeviceAddressInfoEXT": {
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02600",
"text": " If buffer
is non-sparse and was not created with the VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
flag, then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02601",
"text": " buffer
must have been created with VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT
"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
}
]
},
"vkCreateQueryPool": {
"core": [
{
"vuid": "VUID-vkCreateQueryPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkQueryPoolCreateInfo
structure"
},
{
"vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
"text": " pQueryPool
must be a valid pointer to a VkQueryPool
handle"
}
]
},
"VkQueryPoolCreateInfo": {
"core": [
{
"vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
"text": " If the pipeline statistics queries feature is not enabled, queryType
must not be VK_QUERY_TYPE_PIPELINE_STATISTICS
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
"text": " If queryType
is VK_QUERY_TYPE_PIPELINE_STATISTICS
, pipelineStatistics
must be a valid combination of VkQueryPipelineStatisticFlagBits values"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
}
]
},
"vkDestroyQueryPool": {
"core": [
{
"vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
"text": " All submitted commands that refer to queryPool
must have completed execution"
},
{
"vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
"text": " If VkAllocationCallbacks
were provided when queryPool
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
"text": " If no VkAllocationCallbacks
were provided when queryPool
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyQueryPool-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
"text": " If queryPool
is not VK_NULL_HANDLE, queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
"text": " If queryPool
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdResetQueryPool": {
"core": [
{
"vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdResetQueryPool-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkResetQueryPoolEXT": {
"(VK_EXT_host_query_reset)": [
{
"vuid": "VUID-vkResetQueryPoolEXT-None-02665",
"text": " The hostQueryReset feature must be enabled"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02666",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02667",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02741",
"text": " Submitted commands that refer to the range specified by firstQuery
and queryCount
in queryPool
must have completed execution"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-firstQuery-02742",
"text": " The range of queries specified by firstQuery
and queryCount
in queryPool
must not be in use by calls to vkGetQueryPoolResults or vkResetQueryPoolEXT
in other threads"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkResetQueryPoolEXT-queryPool-parent",
"text": " queryPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdBeginQuery": {
"core": [
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
"text": " queryPool
must have been created with a queryType
that differs from that of any queries that are active within commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQuery-None-00807",
"text": " All queries used by the command must be unavailable"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-00800",
"text": " If the precise occlusion queries feature is not enabled, or the queryType
used to create queryPool
was not VK_QUERY_TYPE_OCCLUSION
, flags
must not contain VK_QUERY_CONTROL_PRECISE_BIT
"
},
{
"vuid": "VUID-vkCmdBeginQuery-query-00802",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-00803",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_OCCLUSION
, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-00804",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PIPELINE_STATISTICS
and any of the pipelineStatistics
indicate graphics operations, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-00805",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PIPELINE_STATISTICS
and any of the pipelineStatistics
indicate compute operations, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdBeginQuery-flags-parameter",
"text": " flags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdBeginQuery-query-00808",
"text": " If called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-02327",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-02328",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
then VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackQueries
must be supported"
}
]
},
"vkCmdBeginQueryIndexedEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-01922",
"text": " queryPool
must have been created with a queryType
that differs from that of any queries that are active within commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807",
"text": " All queries used by the command must be unavailable"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800",
"text": " If the precise occlusion queries feature is not enabled, or the queryType
used to create queryPool
was not VK_QUERY_TYPE_OCCLUSION
, flags
must not contain VK_QUERY_CONTROL_PRECISE_BIT
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_OCCLUSION
, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PIPELINE_STATISTICS
and any of the pipelineStatistics
indicate graphics operations, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PIPELINE_STATISTICS
and any of the pipelineStatistics
indicate compute operations, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
"text": " If the queryType
used to create queryPool
was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
must be zero"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
then VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackQueries
must be supported"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
"text": " flags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808",
"text": " If called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
]
},
"vkCmdEndQuery": {
"core": [
{
"vuid": "VUID-vkCmdEndQuery-None-01923",
"text": " All queries used by the command must be active"
},
{
"vuid": "VUID-vkCmdEndQuery-query-00810",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdEndQuery-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdEndQuery-query-00812",
"text": " If vkCmdEndQuery
is called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
]
},
"vkCmdEndQueryIndexedEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
"text": " All queries used by the command must be active"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
"text": " If the queryType
used to create queryPool
was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
must be zero"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02723",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
index
must equal the index
used to begin the query"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
"text": " If vkCmdEndQueryIndexedEXT
is called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
]
},
"vkGetQueryPoolResults": {
"core": [
{
"vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-flags-00814",
"text": " If VK_QUERY_RESULT_64_BIT
is not set in flags
then pData
and stride
must be multiples of 4
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-flags-00815",
"text": " If VK_QUERY_RESULT_64_BIT
is set in flags
then pData
and stride
must be multiples of 8
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
"text": " dataSize
must be large enough to contain the result of each query, as described here"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TIMESTAMP
, flags
must not contain VK_QUERY_RESULT_PARTIAL_BIT
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
"text": " flags
must be a valid combination of VkQueryResultFlagBits values"
},
{
"vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
"text": " queryPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdCopyQueryPoolResults": {
"core": [
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
"text": " dstOffset
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
"text": " If VK_QUERY_RESULT_64_BIT
is not set in flags
then dstOffset
and stride
must be multiples of 4
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
"text": " If VK_QUERY_RESULT_64_BIT
is set in flags
then dstOffset
and stride
must be multiples of 8
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
"text": " dstBuffer
must have enough storage, from dstOffset
, to contain the result of each query, as described here"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TIMESTAMP
, flags
must not contain VK_QUERY_RESULT_PARTIAL_BIT
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
"text": " flags
must be a valid combination of VkQueryResultFlagBits values"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
"text": " Each of commandBuffer
, dstBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734",
"text": " vkCmdCopyQueryPoolResults must not be called if the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL
."
}
]
},
"vkCmdWriteTimestamp": {
"core": [
{
"vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
"text": " queryPool
must have been created with a queryType
of VK_QUERY_TYPE_TIMESTAMP
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
"text": " The query identified by queryPool
and query
must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
"text": " The command pool’s queue family must support a non-zero timestampValidBits
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
"text": " pipelineStage
must be a valid VkPipelineStageFlagBits value"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-None-00830",
"text": " All queries used by the command must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-query-00831",
"text": " If vkCmdWriteTimestamp
is called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
]
},
"vkInitializePerformanceApiINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter",
"text": " pInitializeInfo
must be a valid pointer to a valid VkInitializePerformanceApiInfoINTEL
structure"
}
]
},
"VkInitializePerformanceApiInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
"
},
{
"vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkUninitializePerformanceApiINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter",
"text": " device
must be a valid VkDevice
handle"
}
]
},
"vkGetPerformanceParameterINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter",
"text": " parameter
must be a valid VkPerformanceParameterTypeINTEL value"
},
{
"vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter",
"text": " pValue
must be a valid pointer to a VkPerformanceValueINTEL
structure"
}
]
},
"VkPerformanceValueINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceValueINTEL-type-parameter",
"text": " type
must be a valid VkPerformanceValueTypeINTEL value"
},
{
"vuid": "VUID-VkPerformanceValueINTEL-data-parameter",
"text": " data
must be a valid VkPerformanceValueDataINTEL
union"
}
]
},
"VkPerformanceValueDataINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceValueDataINTEL-valueString-parameter",
"text": " valueString
must be a valid pointer to a valid"
}
]
},
"VkQueryPoolCreateInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkQueryPoolCreateInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfoINTEL-performanceCountersSampling-parameter",
"text": " performanceCountersSampling
must be a valid VkQueryPoolSamplingModeINTEL value"
}
]
},
"vkCmdSetPerformanceMarkerINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkPerformanceMarkerInfoINTEL
structure"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
}
]
},
"VkPerformanceMarkerInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdSetPerformanceStreamMarkerINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkPerformanceStreamMarkerInfoINTEL
structure"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
}
]
},
"VkPerformanceStreamMarkerInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735",
"text": " The value written by the application into marker
must only used the valid bits as reported by vkGetPerformanceParameterINTEL with the VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL
."
},
{
"vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdSetPerformanceOverrideINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736",
"text": " pOverrideInfo
must not be used with a VkPerformanceOverrideTypeINTEL that is not reported available by vkGetPerformanceParameterINTEL
."
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter",
"text": " pOverrideInfo
must be a valid pointer to a valid VkPerformanceOverrideInfoINTEL
structure"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
}
]
},
"VkPerformanceOverrideInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter",
"text": " type
must be a valid VkPerformanceOverrideTypeINTEL value"
}
]
},
"vkAcquirePerformanceConfigurationINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter",
"text": " pAcquireInfo
must be a valid pointer to a valid VkPerformanceConfigurationAcquireInfoINTEL
structure"
},
{
"vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter",
"text": " pConfiguration
must be a valid pointer to a VkPerformanceConfigurationINTEL
handle"
}
]
},
"VkPerformanceConfigurationAcquireInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter",
"text": " type
must be a valid VkPerformanceConfigurationTypeINTEL value"
}
]
},
"vkQueueSetPerformanceConfigurationINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter",
"text": " configuration
must be a valid VkPerformanceConfigurationINTEL
handle"
},
{
"vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent",
"text": " Both of configuration
, and queue
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkReleasePerformanceConfigurationINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737",
"text": " configuration
must not be released before all command buffers submitted while the configuration was set are in pending state."
},
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter",
"text": " configuration
must be a valid VkPerformanceConfigurationINTEL
handle"
},
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent",
"text": " configuration
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdClearColorImage": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdClearColorImage-image-01993",
"text": " The format features of image
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
."
}
],
"core": [
{
"vuid": "VUID-vkCmdClearColorImage-image-00002",
"text": " image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdClearColorImage-image-00003",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
"text": " imageLayout
must specify the layout of the image subresource ranges of image
specified in pRanges
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
"text": " The VkImageSubresourceRange::aspectMask
members of the elements of the pRanges
array must each only include VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
"text": " The VkImageSubresourceRange::baseMipLevel
members of the elements of the pRanges
array must each be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
"text": " For each VkImageSubresourceRange element of pRanges
, if the levelCount
member is not VK_REMAINING_MIP_LEVELS
, then baseMipLevel
+ levelCount
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
"text": " The VkImageSubresourceRange::baseArrayLayer
members of the elements of the pRanges
array must each be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
"text": " For each VkImageSubresourceRange element of pRanges
, if the layerCount
member is not VK_REMAINING_ARRAY_LAYERS
, then baseArrayLayer
+ layerCount
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-image-00007",
"text": " image
must not have a compressed or depth/stencil format"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdClearColorImage-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
"text": " pColor
must be a valid pointer to a valid VkClearColorValue
union"
},
{
"vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
"text": " pRanges
must be a valid pointer to an array of rangeCount
valid VkImageSubresourceRange
structures"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdClearColorImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
"text": " rangeCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdClearColorImage-commonparent",
"text": " Both of commandBuffer
, and image
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdClearColorImage-image-01545",
"text": " image
must not use a format listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views"
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
"text": " imageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
"text": " imageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
"text": " If commandBuffer
is an unprotected command buffer, then image
must not be a protected image"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
"text": " If commandBuffer
is a protected command buffer, then image
must not be an unprotected image"
}
]
},
"vkCmdClearDepthStencilImage": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
"text": " The format features of image
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
."
}
],
"!(VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
"text": " image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
}
],
"(VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658",
"text": " If any element of pRanges.aspect
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and image
was created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageStencilUsageCreateInfoEXT::stencilUsage
used to create image
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659",
"text": " If any element of pRanges.aspect
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and image
was not created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageCreateInfo::usage
used to create image
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660",
"text": " If any element of pRanges.aspect
includes VK_IMAGE_ASPECT_DEPTH_BIT
, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageCreateInfo::usage
used to create image
"
}
],
"core": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
"text": " imageLayout
must specify the layout of the image subresource ranges of image
specified in pRanges
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
"text": " imageLayout
must be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02499",
"text": " The VkImageSubresourceRange::aspectMask
members of the elements of the pRanges
array must each only include VK_IMAGE_ASPECT_DEPTH_BIT
if the image format has a depth component"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02500",
"text": " The VkImageSubresourceRange::aspectMask
members of the elements of the pRanges
array must each only include VK_IMAGE_ASPECT_STENCIL_BIT
if the image format has a stencil component"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
"text": " The VkImageSubresourceRange::baseMipLevel
members of the elements of the pRanges
array must each be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
"text": " For each VkImageSubresourceRange element of pRanges
, if the levelCount
member is not VK_REMAINING_MIP_LEVELS
, then baseMipLevel
+ levelCount
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
"text": " The VkImageSubresourceRange::baseArrayLayer
members of the elements of the pRanges
array must each be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
"text": " For each VkImageSubresourceRange element of pRanges
, if the layerCount
member is not VK_REMAINING_ARRAY_LAYERS
, then baseArrayLayer
+ layerCount
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
"text": " image
must have a depth/stencil format"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
"text": " pDepthStencil
must be a valid pointer to a valid VkClearDepthStencilValue
structure"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
"text": " pRanges
must be a valid pointer to an array of rangeCount
valid VkImageSubresourceRange
structures"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
"text": " rangeCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
"text": " Both of commandBuffer
, and image
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
"text": " If commandBuffer
is an unprotected command buffer, then image
must not be a protected image"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
"text": " If commandBuffer
is a protected command buffer, then image
must not be an unprotected image"
}
]
},
"vkCmdClearAttachments": {
"core": [
{
"vuid": "VUID-vkCmdClearAttachments-aspectMask-02501",
"text": " If the aspectMask
member of any element of pAttachments
contains VK_IMAGE_ASPECT_COLOR_BIT
, then the colorAttachment
member of that element must either refer to a color attachment which is VK_ATTACHMENT_UNUSED
, or must be a valid color attachment."
},
{
"vuid": "VUID-vkCmdClearAttachments-aspectMask-02502",
"text": " If the aspectMask
member of any element of pAttachments
contains VK_IMAGE_ASPECT_DEPTH_BIT
, then the current subpass' depth/stencil attachment must either be VK_ATTACHMENT_UNUSED
, or must have a depth component"
},
{
"vuid": "VUID-vkCmdClearAttachments-aspectMask-02503",
"text": " If the aspectMask
member of any element of pAttachments
contains VK_IMAGE_ASPECT_STENCIL_BIT
, then the current subpass' depth/stencil attachment must either be VK_ATTACHMENT_UNUSED
, or must have a stencil component"
},
{
"vuid": "VUID-vkCmdClearAttachments-rect-02682",
"text": " The rect
member of each element of pRects
must have an extent.width
greater than 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-rect-02683",
"text": " The rect
member of each element of pRects
must have an extent.height
greater than 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-pRects-00016",
"text": " The rectangular region specified by each element of pRects
must be contained within the render area of the current render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-pRects-00017",
"text": " The layers specified by each element of pRects
must be contained within every attachment that pAttachments
refers to"
},
{
"vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
"text": " The layerCount
member of each element of pRects
must not be 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
"text": " pAttachments
must be a valid pointer to an array of attachmentCount
valid VkClearAttachment
structures"
},
{
"vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
"text": " pRects
must be a valid pointer to an array of rectCount
VkClearRect
structures"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdClearAttachments-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
"text": " rectCount
must be greater than 0
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
"text": " If commandBuffer
is an unprotected command buffer, then each attachment to be cleared must not be a protected image."
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
"text": " If commandBuffer
is a protected command buffer, then each attachment to be cleared must not be an unprotected image."
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
"text": " If the render pass instance this is recorded in uses multiview, then baseArrayLayer
must be zero and layerCount
must be one."
}
]
},
"VkClearAttachment": {
"core": [
{
"vuid": "VUID-VkClearAttachment-aspectMask-00019",
"text": " If aspectMask
includes VK_IMAGE_ASPECT_COLOR_BIT
, it must not include VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkClearAttachment-aspectMask-00020",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkClearAttachment-clearValue-00021",
"text": " clearValue
must be a valid VkClearValue
union"
},
{
"vuid": "VUID-VkClearAttachment-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkClearAttachment-aspectMask-02246",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
for any index i
."
}
]
},
"VkClearDepthStencilValue": {
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkClearDepthStencilValue-depth-00022",
"text": " Unless the VK_EXT_depth_range_unrestricted
extension is enabled depth
must be between 0.0
and 1.0
, inclusive"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkClearDepthStencilValue-depth-02506",
"text": " depth
must be between 0.0
and 1.0
, inclusive"
}
]
},
"vkCmdFillBuffer": {
"core": [
{
"vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
"text": " dstOffset
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
"text": " dstOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdFillBuffer-size-00026",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdFillBuffer-size-00027",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be less than or equal to the size of dstBuffer
minus dstOffset
"
},
{
"vuid": "VUID-vkCmdFillBuffer-size-00028",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics or compute operations"
},
{
"vuid": "VUID-vkCmdFillBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdFillBuffer-commonparent",
"text": " Both of commandBuffer
, and dstBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics or compute operations"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
"text": " If commandBuffer
is an unprotected command buffer, then dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
"text": " If commandBuffer
is a protected command buffer, then dstBuffer
must not be an unprotected buffer"
}
]
},
"vkCmdUpdateBuffer": {
"core": [
{
"vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
"text": " dstOffset
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
"text": " dataSize
must be less than or equal to the size of dstBuffer
minus dstOffset
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
"text": " dstOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
"text": " dataSize
must be less than or equal to 65536
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
"text": " dataSize
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commonparent",
"text": " Both of commandBuffer
, and dstBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
"text": " If commandBuffer
is an unprotected command buffer, then dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
"text": " If commandBuffer
is a protected command buffer, then dstBuffer
must not be an unprotected buffer"
}
]
},
"vkCmdCopyBuffer": {
"core": [
{
"vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
"text": " The srcOffset
member of each element of pRegions
must be less than the size of srcBuffer
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
"text": " The dstOffset
member of each element of pRegions
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-size-00115",
"text": " The size
member of each element of pRegions
must be less than or equal to the size of srcBuffer
minus srcOffset
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-size-00116",
"text": " The size
member of each element of pRegions
must be less than or equal to the size of dstBuffer
minus dstOffset
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
"text": " The union of the source regions, and the union of the destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
"text": " srcBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
"text": " If srcBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferCopy
structures"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commonparent",
"text": " Each of commandBuffer
, dstBuffer
, and srcBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
"text": " If commandBuffer
is an unprotected command buffer, then srcBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
"text": " If commandBuffer
is an unprotected command buffer, then dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
"text": " If commandBuffer
is a protected command buffer, then dstBuffer
must not be an unprotected buffer"
}
]
},
"VkBufferCopy": {
"core": [
{
"vuid": "VUID-VkBufferCopy-size-01988",
"text": " The size
must be greater than 0
"
}
]
},
"vkCmdCopyImage": {
"core": [
{
"vuid": "VUID-vkCmdCopyImage-pRegions-00122",
"text": " The source region specified by each element of pRegions
must be a region that is contained within srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-00123",
"text": " The destination region specified by each element of pRegions
must be a region that is contained within dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-00124",
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00126",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
"text": " srcImageLayout
must specify the layout of the image subresources of srcImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-00131",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
"text": " dstImageLayout
must specify the layout of the image subresources of dstImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00136",
"text": " The sample count of srcImage
and dstImage
must match"
},
{
"vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
"text": " The srcSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
"text": " The dstSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
"text": " The srcSubresource.baseArrayLayer
+ srcSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
"text": " The dstSubresource.baseArrayLayer
+ dstSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
"text": " The srcOffset
and extent
members of each element of pRegions
must respect the image transfer granularity requirements of commandBuffer
’s command pool’s queue family, as described in VkQueueFamilyProperties"
},
{
"vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
"text": " The dstOffset
and extent
members of each element of pRegions
must respect the image transfer granularity requirements of commandBuffer
’s command pool’s queue family, as described in VkQueueFamilyProperties"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
"text": " srcImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageCopy
structures"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01995",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
."
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01996",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
."
}
],
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00127",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-00132",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00135",
"text": " The VkFormat of each of srcImage
and dstImage
must be compatible, as defined above"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01546",
"text": " If srcImage
is non-sparse then the image or disjoint plane to be copied must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01547",
"text": " If dstImage
is non-sparse then the image or disjoint plane that is the destination of the copy must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01548",
"text": " If the VkFormat of each of srcImage
and dstImage
is not a multi-planar format, the VkFormat of each of srcImage
and dstImage
must be compatible, as defined above"
},
{
"vuid": "VUID-vkCmdCopyImage-None-01549",
"text": " In a copy to or from a plane of a multi-planar image, the VkFormat of the image and plane must be compatible according to the description of compatible planes for the plane being copied"
},
{
"vuid": "VUID-vkCmdCopyImage-aspectMask-01550",
"text": " When a copy is performed to or from an image with a multi-planar format, the aspectMask
of the srcSubresource
and/or dstSubresource
that refers to the multi-planar image must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
(with VK_IMAGE_ASPECT_PLANE_2_BIT
valid only for a VkFormat with three planes)"
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
"text": " If commandBuffer
is an unprotected command buffer, then srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
"text": " If commandBuffer
is an unprotected command buffer, then dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
"text": " If commandBuffer
is a protected command buffer, then dstImage
must not be an unprotected image"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdCopyImage-dstImage-02542",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
]
},
"VkImageCopy": {
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCopy-aspectMask-00137",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageCopy-srcOffset-00157",
"text": " If the calling command’s srcImage
is a compressed image, all members of srcOffset
must be a multiple of the corresponding dimensions of the compressed texel block"
},
{
"vuid": "VUID-VkImageCopy-extent-00158",
"text": " If the calling command’s srcImage
is a compressed image, extent.width
must be a multiple of the compressed texel block width or (extent.width
+ srcOffset.x
) must equal the source image subresource width"
},
{
"vuid": "VUID-VkImageCopy-extent-00159",
"text": " If the calling command’s srcImage
is a compressed image, extent.height
must be a multiple of the compressed texel block height or (extent.height
+ srcOffset.y
) must equal the source image subresource height"
},
{
"vuid": "VUID-VkImageCopy-extent-00160",
"text": " If the calling command’s srcImage
is a compressed image, extent.depth
must be a multiple of the compressed texel block depth or (extent.depth
+ srcOffset.z
) must equal the source image subresource depth"
},
{
"vuid": "VUID-VkImageCopy-dstOffset-00162",
"text": " If the calling command’s dstImage
is a compressed format image, all members of dstOffset
must be a multiple of the corresponding dimensions of the compressed texel block"
},
{
"vuid": "VUID-VkImageCopy-extent-00163",
"text": " If the calling command’s dstImage
is a compressed format image, extent.width
must be a multiple of the compressed texel block width or (extent.width
+ dstOffset.x
) must equal the destination image subresource width"
},
{
"vuid": "VUID-VkImageCopy-extent-00164",
"text": " If the calling command’s dstImage
is a compressed format image, extent.height
must be a multiple of the compressed texel block height or (extent.height
+ dstOffset.y
) must equal the destination image subresource height"
},
{
"vuid": "VUID-VkImageCopy-extent-00165",
"text": " If the calling command’s dstImage
is a compressed format image, extent.depth
must be a multiple of the compressed texel block depth or (extent.depth
+ dstOffset.z
) must equal the destination image subresource depth"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCopy-srcImage-01551",
"text": " If neither the calling command’s srcImage
nor the calling command’s dstImage
has a multi-planar image format then the aspectMask
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01552",
"text": " If the calling command’s srcImage
has a VkFormat with two planes then the srcSubresource
aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01553",
"text": " If the calling command’s srcImage
has a VkFormat with three planes then the srcSubresource
aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01554",
"text": " If the calling command’s dstImage
has a VkFormat with two planes then the dstSubresource
aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01555",
"text": " If the calling command’s dstImage
has a VkFormat with three planes then the dstSubresource
aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01556",
"text": " If the calling command’s srcImage
has a multi-planar image format and the dstImage
does not have a multi-planar image format, the dstSubresource
aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01557",
"text": " If the calling command’s dstImage
has a multi-planar image format and the srcImage
does not have a multi-planar image format, the srcSubresource
aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01727",
"text": " If the calling command’s srcImage
is a compressed image, or a single-plane, “_422
” image format, all members of srcOffset
must be a multiple of the corresponding dimensions of the compressed texel block"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01728",
"text": " If the calling command’s srcImage
is a compressed image, or a single-plane, “_422
” image format, extent.width
must be a multiple of the compressed texel block width or (extent.width
+ srcOffset.x
) must equal the source image subresource width"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01729",
"text": " If the calling command’s srcImage
is a compressed image, or a single-plane, “_422
” image format, extent.height
must be a multiple of the compressed texel block height or (extent.height
+ srcOffset.y
) must equal the source image subresource height"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01730",
"text": " If the calling command’s srcImage
is a compressed image, or a single-plane, “_422
” image format, extent.depth
must be a multiple of the compressed texel block depth or (extent.depth
+ srcOffset.z
) must equal the source image subresource depth"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01731",
"text": " If the calling command’s dstImage
is a compressed format image, or a single-plane, “_422
” image format, all members of dstOffset
must be a multiple of the corresponding dimensions of the compressed texel block"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01732",
"text": " If the calling command’s dstImage
is a compressed format image, or a single-plane, “_422
” image format, extent.width
must be a multiple of the compressed texel block width or (extent.width
+ dstOffset.x
) must equal the destination image subresource width"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01733",
"text": " If the calling command’s dstImage
is a compressed format image, or a single-plane, “_422
” image format, extent.height
must be a multiple of the compressed texel block height or (extent.height
+ dstOffset.y
) must equal the destination image subresource height"
},
{
"vuid": "VUID-VkImageCopy-dstImage-01734",
"text": " If the calling command’s dstImage
is a compressed format image, or a single-plane, “_422
” image format, extent.depth
must be a multiple of the compressed texel block depth or (extent.depth
+ dstOffset.z
) must equal the destination image subresource depth"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCopy-layerCount-00138",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageCopy-srcImage-00139",
"text": " If either of the calling command’s srcImage
or dstImage
parameters are of VkImageType VK_IMAGE_TYPE_3D
, the baseArrayLayer
and layerCount
members of both srcSubresource
and dstSubresource
must be 0
and 1
, respectively"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01789",
"text": " If the calling command’s srcImage
or dstImage
is of type VK_IMAGE_TYPE_2D
, then extent.depth
must be 1
."
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCopy-extent-00140",
"text": " The number of slices of the extent
(for 3D) or layers of the srcSubresource
(for non-3D) must match the number of slices of the extent
(for 3D) or layers of the dstSubresource
(for non-3D)"
},
{
"vuid": "VUID-VkImageCopy-srcImage-00141",
"text": " If either of the calling command’s srcImage
or dstImage
parameters are of VkImageType VK_IMAGE_TYPE_3D
, the baseArrayLayer
and layerCount
members of the corresponding subresource must be 0
and 1
, respectively"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01790",
"text": " If both srcImage
and dstImage
are of type VK_IMAGE_TYPE_2D
then extent.depth
must be 1
."
},
{
"vuid": "VUID-VkImageCopy-srcImage-01791",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_2D
, and the dstImage
is of type VK_IMAGE_TYPE_3D
, then extent.depth
must equal to the layerCount
member of srcSubresource
."
},
{
"vuid": "VUID-VkImageCopy-dstImage-01792",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_2D
, and the srcImage
is of type VK_IMAGE_TYPE_3D
, then extent.depth
must equal to the layerCount
member of dstSubresource
."
}
],
"core": [
{
"vuid": "VUID-VkImageCopy-aspectMask-00142",
"text": " The aspectMask
member of srcSubresource
must specify aspects present in the calling command’s srcImage
"
},
{
"vuid": "VUID-VkImageCopy-aspectMask-00143",
"text": " The aspectMask
member of dstSubresource
must specify aspects present in the calling command’s dstImage
"
},
{
"vuid": "VUID-VkImageCopy-srcOffset-00144",
"text": " srcOffset.x
and (extent.width
+ srcOffset.x
) must both be greater than or equal to 0
and less than or equal to the source image subresource width"
},
{
"vuid": "VUID-VkImageCopy-srcOffset-00145",
"text": " srcOffset.y
and (extent.height
+ srcOffset.y
) must both be greater than or equal to 0
and less than or equal to the source image subresource height"
},
{
"vuid": "VUID-VkImageCopy-srcImage-00146",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_1D
, then srcOffset.y
must be 0
and extent.height
must be 1
."
},
{
"vuid": "VUID-VkImageCopy-srcOffset-00147",
"text": " srcOffset.z
and (extent.depth
+ srcOffset.z
) must both be greater than or equal to 0
and less than or equal to the source image subresource depth"
},
{
"vuid": "VUID-VkImageCopy-srcImage-01785",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_1D
, then srcOffset.z
must be 0
and extent.depth
must be 1
."
},
{
"vuid": "VUID-VkImageCopy-dstImage-01786",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_1D
, then dstOffset.z
must be 0
and extent.depth
must be 1
."
},
{
"vuid": "VUID-VkImageCopy-srcImage-01787",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_2D
, then srcOffset.z
must be 0
."
},
{
"vuid": "VUID-VkImageCopy-dstImage-01788",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_2D
, then dstOffset.z
must be 0
."
},
{
"vuid": "VUID-VkImageCopy-dstOffset-00150",
"text": " dstOffset.x
and (extent.width
+ dstOffset.x
) must both be greater than or equal to 0
and less than or equal to the destination image subresource width"
},
{
"vuid": "VUID-VkImageCopy-dstOffset-00151",
"text": " dstOffset.y
and (extent.height
+ dstOffset.y
) must both be greater than or equal to 0
and less than or equal to the destination image subresource height"
},
{
"vuid": "VUID-VkImageCopy-dstImage-00152",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_1D
, then dstOffset.y
must be 0
and extent.height
must be 1
."
},
{
"vuid": "VUID-VkImageCopy-dstOffset-00153",
"text": " dstOffset.z
and (extent.depth
+ dstOffset.z
) must both be greater than or equal to 0
and less than or equal to the destination image subresource depth"
},
{
"vuid": "VUID-VkImageCopy-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers
structure"
},
{
"vuid": "VUID-VkImageCopy-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers
structure"
}
]
},
"VkImageSubresourceLayers": {
"core": [
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
"text": " If aspectMask
contains VK_IMAGE_ASPECT_COLOR_BIT
, it must not contain either of VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
"text": " aspectMask
must not contain VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
"text": " layerCount
must be greater than 0"
},
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT
for any index i
."
}
]
},
"vkCmdCopyBufferToImage": {
"core": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
"text": " srcBuffer
must be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element of pRegions
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
"text": " The image region specified by each element of pRegions
must be a region that is contained within dstImage
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
"text": " srcBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
"text": " If srcBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
"text": " dstImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
"text": " dstImageLayout
must specify the layout of the image subresources of dstImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
"text": " The imageSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
"text": " The imageSubresource.baseArrayLayer
+ imageSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
"text": " The imageOffset
and imageExtent
members of each element of pRegions
must respect the image transfer granularity requirements of commandBuffer
’s command pool’s queue family, as described in VkQueueFamilyProperties"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferImageCopy
structures"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
."
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
"text": " If commandBuffer
is an unprotected command buffer, then srcBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
"text": " If commandBuffer
is an unprotected command buffer, then dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
"text": " If commandBuffer
is a protected command buffer, then dstImage
must not be an unprotected image"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
"text": " dstImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
]
},
"vkCmdCopyImageToBuffer": {
"core": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
"text": " The image region specified by each element of pRegions
must be a region that is contained within srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
"text": " dstBuffer
must be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element of pRegions
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
"text": " srcImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
"text": " srcImageLayout
must specify the layout of the image subresources of srcImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
"text": " The imageSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
"text": " The imageSubresource.baseArrayLayer
+ imageSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
"text": " The imageOffset
and imageExtent
members of each element of pRegions
must respect the image transfer granularity requirements of commandBuffer
’s command pool’s queue family, as described in VkQueueFamilyProperties"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
"text": " srcImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferImageCopy
structures"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
"text": " Each of commandBuffer
, dstBuffer
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
."
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
"text": " If commandBuffer
is an unprotected command buffer, then srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
"text": " If commandBuffer
is an unprotected command buffer, then dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
"text": " If commandBuffer
is a protected command buffer, then dstBuffer
must not be an unprotected buffer"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
"text": " srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
]
},
"VkBufferImageCopy": {
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBufferImageCopy-bufferOffset-00193",
"text": " If the calling command’s VkImage
parameter’s format is not a depth/stencil format, then bufferOffset
must be a multiple of the format’s texel block size."
},
{
"vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203",
"text": " If the calling command’s VkImage
parameter is a compressed image, bufferRowLength
must be a multiple of the compressed texel block width"
},
{
"vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204",
"text": " If the calling command’s VkImage
parameter is a compressed image, bufferImageHeight
must be a multiple of the compressed texel block height"
},
{
"vuid": "VUID-VkBufferImageCopy-imageOffset-00205",
"text": " If the calling command’s VkImage
parameter is a compressed image, all members of imageOffset
must be a multiple of the corresponding dimensions of the compressed texel block"
},
{
"vuid": "VUID-VkBufferImageCopy-bufferOffset-00206",
"text": " If the calling command’s VkImage
parameter is a compressed image, bufferOffset
must be a multiple of the compressed texel block size in bytes"
},
{
"vuid": "VUID-VkBufferImageCopy-imageExtent-00207",
"text": " If the calling command’s VkImage
parameter is a compressed image, imageExtent.width
must be a multiple of the compressed texel block width or (imageExtent.width
+ imageOffset.x
) must equal the image subresource width"
},
{
"vuid": "VUID-VkBufferImageCopy-imageExtent-00208",
"text": " If the calling command’s VkImage
parameter is a compressed image, imageExtent.height
must be a multiple of the compressed texel block height or (imageExtent.height
+ imageOffset.y
) must equal the image subresource height"
},
{
"vuid": "VUID-VkBufferImageCopy-imageExtent-00209",
"text": " If the calling command’s VkImage
parameter is a compressed image, imageExtent.depth
must be a multiple of the compressed texel block depth or (imageExtent.depth
+ imageOffset.z
) must equal the image subresource depth"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBufferImageCopy-bufferOffset-01558",
"text": " If the calling command’s VkImage
parameter’s format is not a depth/stencil format or a multi-planar format, then bufferOffset
must be a multiple of the format’s texel block size."
},
{
"vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
"text": " If the calling command’s VkImage
parameter’s format is a multi-planar format, then bufferOffset
must be a multiple of the element size of the compatible format for the format and the aspectMask
of the imageSubresource
as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01735",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, bufferRowLength
must be a multiple of the compressed texel block width"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01736",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, bufferImageHeight
must be a multiple of the compressed texel block height"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01737",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, all members of imageOffset
must be a multiple of the corresponding dimensions of the compressed texel block"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01738",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, bufferOffset
must be a multiple of the compressed texel block size in bytes"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01739",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, imageExtent.width
must be a multiple of the compressed texel block width or (imageExtent.width
+ imageOffset.x
) must equal the image subresource width"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01740",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, imageExtent.height
must be a multiple of the compressed texel block height or (imageExtent.height
+ imageOffset.y
) must equal the image subresource height"
},
{
"vuid": "VUID-VkBufferImageCopy-None-01741",
"text": " If the calling command’s VkImage
parameter is a compressed image, or a single-plane, “_422
” image format, imageExtent.depth
must be a multiple of the compressed texel block depth or (imageExtent.depth
+ imageOffset.z
) must equal the image subresource depth"
},
{
"vuid": "VUID-VkBufferImageCopy-aspectMask-01560",
"text": " If the calling command’s VkImage
parameter’s format is a multi-planar format, then the aspectMask
member of imageSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
(with VK_IMAGE_ASPECT_PLANE_2_BIT
valid only for image formats with three planes)"
}
],
"core": [
{
"vuid": "VUID-VkBufferImageCopy-bufferOffset-00194",
"text": " bufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
"text": " bufferRowLength
must be 0
, or greater than or equal to the width
member of imageExtent
"
},
{
"vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
"text": " bufferImageHeight
must be 0
, or greater than or equal to the height
member of imageExtent
"
},
{
"vuid": "VUID-VkBufferImageCopy-imageOffset-00197",
"text": " imageOffset.x
and (imageExtent.width
+ imageOffset.x
) must both be greater than or equal to 0
and less than or equal to the image subresource width"
},
{
"vuid": "VUID-VkBufferImageCopy-imageOffset-00198",
"text": " imageOffset.y
and (imageExtent.height + imageOffset.y
) must both be greater than or equal to 0
and less than or equal to the image subresource height"
},
{
"vuid": "VUID-VkBufferImageCopy-srcImage-00199",
"text": " If the calling command’s srcImage
(vkCmdCopyImageToBuffer) or dstImage
(vkCmdCopyBufferToImage) is of type VK_IMAGE_TYPE_1D
, then imageOffset.y
must be 0
and imageExtent.height
must be 1
."
},
{
"vuid": "VUID-VkBufferImageCopy-imageOffset-00200",
"text": " imageOffset.z
and (imageExtent.depth + imageOffset.z
) must both be greater than or equal to 0
and less than or equal to the image subresource depth"
},
{
"vuid": "VUID-VkBufferImageCopy-srcImage-00201",
"text": " If the calling command’s srcImage
(vkCmdCopyImageToBuffer) or dstImage
(vkCmdCopyBufferToImage) is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then imageOffset.z
must be 0
and imageExtent.depth
must be 1
"
},
{
"vuid": "VUID-VkBufferImageCopy-aspectMask-00211",
"text": " The aspectMask
member of imageSubresource
must specify aspects present in the calling command’s VkImage
parameter"
},
{
"vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
"text": " The aspectMask
member of imageSubresource
must only have a single bit set"
},
{
"vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213",
"text": " If the calling command’s VkImage
parameter is of VkImageType VK_IMAGE_TYPE_3D
, the baseArrayLayer
and layerCount
members of imageSubresource
must be 0
and 1
, respectively"
},
{
"vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
"text": " imageSubresource
must be a valid VkImageSubresourceLayers
structure"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkBufferImageCopy-None-00214",
"text": " When copying to the depth aspect of an image subresource, the data in the source buffer must be in the range [0,1]"
}
]
},
"vkCmdBlitImage": {
"core": [
{
"vuid": "VUID-vkCmdBlitImage-pRegions-00215",
"text": " The source region specified by each element of pRegions
must be a region that is contained within srcImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-pRegions-00216",
"text": " The destination region specified by each element of pRegions
must be a region that is contained within dstImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-pRegions-00217",
"text": " The union of all destination regions, specified by the elements of pRegions
, must not overlap in memory with any texel that may be sampled during the blit operation"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-01999",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_BLIT_SRC_BIT
."
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00219",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00220",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
"text": " srcImageLayout
must specify the layout of the image subresources of srcImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-02000",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_BLIT_DST_BIT
."
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00224",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00225",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
"text": " dstImageLayout
must specify the layout of the image subresources of dstImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00228",
"text": " The sample count of srcImage
and dstImage
must both be equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00229",
"text": " If either of srcImage
or dstImage
was created with a signed integer VkFormat, the other must also have been created with a signed integer VkFormat"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00230",
"text": " If either of srcImage
or dstImage
was created with an unsigned integer VkFormat, the other must also have been created with an unsigned integer VkFormat"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00231",
"text": " If either of srcImage
or dstImage
was created with a depth/stencil format, the other must have exactly the same format"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00232",
"text": " If srcImage
was created with a depth/stencil format, filter
must be VK_FILTER_NEAREST
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00233",
"text": " srcImage
must have been created with a samples
value of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00234",
"text": " dstImage
must have been created with a samples
value of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-02001",
"text": " If filter
is VK_FILTER_LINEAR
, then the format features of srcImage
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
."
},
{
"vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
"text": " The srcSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
"text": " The dstSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
"text": " The srcSubresource.baseArrayLayer
+ srcSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
"text": " The dstSubresource.baseArrayLayer
+ dstSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
"text": " srcImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageBlit
structures"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-parameter",
"text": " filter
must be a valid VkFilter value"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBlitImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBlitImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImage-01561",
"text": " srcImage
must not use a format listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-01562",
"text": " dstImage
must not use a format listed in Formats requiring sampler Y’CBCR conversion for VK_IMAGE_ASPECT_COLOR_BIT
image views"
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdBlitImage-filter-02002",
"text": " If filter
is VK_FILTER_CUBIC_EXT
, then the format features of srcImage
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
."
},
{
"vuid": "VUID-vkCmdBlitImage-filter-00237",
"text": " If filter
is VK_FILTER_CUBIC_EXT
, srcImage
must have a VkImageType of VK_IMAGE_TYPE_2D
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
"text": " If commandBuffer
is an unprotected command buffer, then srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
"text": " If commandBuffer
is an unprotected command buffer, then dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
"text": " If commandBuffer
is a protected command buffer, then dstImage
must not be an unprotected image"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdBlitImage-dstImage-02545",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
]
},
"VkImageBlit": {
"core": [
{
"vuid": "VUID-VkImageBlit-aspectMask-00238",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageBlit-layerCount-00239",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageBlit-srcImage-00240",
"text": " If either of the calling command’s srcImage
or dstImage
parameters are of VkImageType VK_IMAGE_TYPE_3D
, the baseArrayLayer
and layerCount
members of both srcSubresource
and dstSubresource
must be 0
and 1
, respectively"
},
{
"vuid": "VUID-VkImageBlit-aspectMask-00241",
"text": " The aspectMask
member of srcSubresource
must specify aspects present in the calling command’s srcImage
"
},
{
"vuid": "VUID-VkImageBlit-aspectMask-00242",
"text": " The aspectMask
member of dstSubresource
must specify aspects present in the calling command’s dstImage
"
},
{
"vuid": "VUID-VkImageBlit-srcOffset-00243",
"text": " srcOffset
[0].x
and srcOffset
[1].x
must both be greater than or equal to 0
and less than or equal to the source image subresource width"
},
{
"vuid": "VUID-VkImageBlit-srcOffset-00244",
"text": " srcOffset
[0].y
and srcOffset
[1].y
must both be greater than or equal to 0
and less than or equal to the source image subresource height"
},
{
"vuid": "VUID-VkImageBlit-srcImage-00245",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_1D
, then srcOffset
[0].y must be 0
and srcOffset
[1].y must be 1
."
},
{
"vuid": "VUID-VkImageBlit-srcOffset-00246",
"text": " srcOffset
[0].z
and srcOffset
[1].z
must both be greater than or equal to 0
and less than or equal to the source image subresource depth"
},
{
"vuid": "VUID-VkImageBlit-srcImage-00247",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then srcOffset
[0].z must be 0
and srcOffset
[1].z must be 1
."
},
{
"vuid": "VUID-VkImageBlit-dstOffset-00248",
"text": " dstOffset
[0].x
and dstOffset
[1].x
must both be greater than or equal to 0
and less than or equal to the destination image subresource width"
},
{
"vuid": "VUID-VkImageBlit-dstOffset-00249",
"text": " dstOffset
[0].y
and dstOffset
[1].y
must both be greater than or equal to 0
and less than or equal to the destination image subresource height"
},
{
"vuid": "VUID-VkImageBlit-dstImage-00250",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_1D
, then dstOffset
[0].y must be 0
and dstOffset
[1].y must be 1
."
},
{
"vuid": "VUID-VkImageBlit-dstOffset-00251",
"text": " dstOffset
[0].z
and dstOffset
[1].z
must both be greater than or equal to 0
and less than or equal to the destination image subresource depth"
},
{
"vuid": "VUID-VkImageBlit-dstImage-00252",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then dstOffset
[0].z must be 0
and dstOffset
[1].z must be 1
."
},
{
"vuid": "VUID-VkImageBlit-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers
structure"
},
{
"vuid": "VUID-VkImageBlit-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers
structure"
}
]
},
"vkCmdResolveImage": {
"core": [
{
"vuid": "VUID-vkCmdResolveImage-pRegions-00253",
"text": " The source region specified by each element of pRegions
must be a region that is contained within srcImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-pRegions-00254",
"text": " The destination region specified by each element of pRegions
must be a region that is contained within dstImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-pRegions-00255",
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-00256",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-00257",
"text": " srcImage
must have a sample count equal to any valid sample count value other than VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00258",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00259",
"text": " dstImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
"text": " srcImageLayout
must specify the layout of the image subresources of srcImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
"text": " dstImageLayout
must specify the layout of the image subresources of dstImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-02003",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
."
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-01386",
"text": " srcImage
and dstImage
must have been created with the same image format"
},
{
"vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
"text": " The srcSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
"text": " The dstSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
"text": " The srcSubresource.baseArrayLayer
+ srcSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
"text": " The dstSubresource.baseArrayLayer
+ dstSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
"text": " srcImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageResolve
structures"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdResolveImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdResolveImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
"text": " If commandBuffer
is an unprotected command buffer, then srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
"text": " If commandBuffer
is an unprotected command buffer, then dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
"text": " If commandBuffer
is a protected command buffer, then dstImage
must not be an unprotected image"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdResolveImage-dstImage-02546",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
]
},
"VkImageResolve": {
"core": [
{
"vuid": "VUID-VkImageResolve-aspectMask-00266",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must only contain VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageResolve-layerCount-00267",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageResolve-srcImage-00268",
"text": " If either of the calling command’s srcImage
or dstImage
parameters are of VkImageType VK_IMAGE_TYPE_3D
, the baseArrayLayer
and layerCount
members of both srcSubresource
and dstSubresource
must be 0
and 1
, respectively"
},
{
"vuid": "VUID-VkImageResolve-srcOffset-00269",
"text": " srcOffset.x
and (extent.width
+ srcOffset.x
) must both be greater than or equal to 0
and less than or equal to the source image subresource width"
},
{
"vuid": "VUID-VkImageResolve-srcOffset-00270",
"text": " srcOffset.y
and (extent.height
+ srcOffset.y
) must both be greater than or equal to 0
and less than or equal to the source image subresource height"
},
{
"vuid": "VUID-VkImageResolve-srcImage-00271",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_1D
, then srcOffset.y
must be 0
and extent.height
must be 1
."
},
{
"vuid": "VUID-VkImageResolve-srcOffset-00272",
"text": " srcOffset.z
and (extent.depth
+ srcOffset.z
) must both be greater than or equal to 0
and less than or equal to the source image subresource depth"
},
{
"vuid": "VUID-VkImageResolve-srcImage-00273",
"text": " If the calling command’s srcImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then srcOffset.z
must be 0
and extent.depth
must be 1
."
},
{
"vuid": "VUID-VkImageResolve-dstOffset-00274",
"text": " dstOffset.x
and (extent.width
+ dstOffset.x
) must both be greater than or equal to 0
and less than or equal to the destination image subresource width"
},
{
"vuid": "VUID-VkImageResolve-dstOffset-00275",
"text": " dstOffset.y
and (extent.height
+ dstOffset.y
) must both be greater than or equal to 0
and less than or equal to the destination image subresource height"
},
{
"vuid": "VUID-VkImageResolve-dstImage-00276",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_1D
, then dstOffset.y
must be 0
and extent.height
must be 1
."
},
{
"vuid": "VUID-VkImageResolve-dstOffset-00277",
"text": " dstOffset.z
and (extent.depth
+ dstOffset.z
) must both be greater than or equal to 0
and less than or equal to the destination image subresource depth"
},
{
"vuid": "VUID-VkImageResolve-dstImage-00278",
"text": " If the calling command’s dstImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then dstOffset.z
must be 0
and extent.depth
must be 1
."
},
{
"vuid": "VUID-VkImageResolve-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers
structure"
},
{
"vuid": "VUID-VkImageResolve-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers
structure"
}
]
},
"vkCmdWriteBufferMarkerAMD": {
"(VK_AMD_buffer_marker)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
"text": " dstOffset
must be less than or equal to the size of dstBuffer
minus 4
."
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
"text": " dstOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
"text": " pipelineStage
must be a valid VkPipelineStageFlagBits value"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
"text": " Both of commandBuffer
, and dstBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkPipelineInputAssemblyStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
"text": " If topology
is VK_PRIMITIVE_TOPOLOGY_POINT_LIST
, VK_PRIMITIVE_TOPOLOGY_LINE_LIST
, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
or VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
, primitiveRestartEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
"text": " If the geometry shaders feature is not enabled, topology
must not be any of VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
"text": " If the tessellation shaders feature is not enabled, topology
must not be VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
"text": " topology
must be a valid VkPrimitiveTopology value"
}
]
},
"vkCmdBindIndexBuffer": {
"core": [
{
"vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
"text": " offset
must be less than the size of buffer
"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
"text": " The sum of offset
and the address of the range of VkDeviceMemory
object that is backing buffer
, must be a multiple of the type indicated by indexType
"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDEX_BUFFER_BIT
flag"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
"text": " indexType
must not be VK_INDEX_TYPE_NONE_NV
."
}
]
},
"vkCmdDraw": {
"core": [
{
"vuid": "VUID-vkCmdDraw-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDraw-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDraw-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDraw-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDraw-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDraw-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDraw-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDraw-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDraw-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDraw-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDraw-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDraw-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDraw-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDraw-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDraw-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDraw-renderpass",
"text": " This command must only be called inside of a render pass instance"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDraw-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point must not write to any resource"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"vkCmdDrawIndexed": {
"core": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexed-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexed-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
"text": " (indexSize
* (firstIndex
+ indexCount
) + offset
) must be less than or equal to the size of the bound index buffer, with indexSize
being based on the type specified by indexType
, where the index buffer, indexType
, and offset
are specified via vkCmdBindIndexBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexed-renderpass",
"text": " This command must only be called inside of a render pass instance"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndexed-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point must not write to any resource"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"vkCmdDrawIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirect-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirect-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-02718",
"text": " If the multi-draw indirect feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
"text": " If the drawIndirectFirstInstance feature is not enabled, all the firstInstance
members of the VkDrawIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
"text": " If drawCount
is greater than 1
, stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawIndirectCommand)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawIndirectCommand)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirect-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndirect-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"VkDrawIndirectCommand": {
"core": [
{
"vuid": "VUID-VkDrawIndirectCommand-None-00500",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
"text": " If the drawIndirectFirstInstance feature is not enabled, firstInstance
must be 0
"
}
]
},
"vkCmdDrawIndirectCountKHR": {
"(VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-stride-03110",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof(VkDrawIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-maxDrawCount-03111",
"text": " If maxDrawCount
is greater than or equal to 1
, (stride
{times} (maxDrawCount
- 1) + offset
+ sizeof(VkDrawIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03121",
"text": " If the count stored in countBuffer
is equal to 1
, (offset
+ sizeof(VkDrawIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03122",
"text": " If the count stored in countBuffer
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof(VkDrawIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"vkCmdDrawIndexedIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718",
"text": " If the multi-draw indirect feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
"text": " If drawCount
is greater than 1
, stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawIndexedIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
"text": " If the drawIndirectFirstInstance feature is not enabled, all the firstInstance
members of the VkDrawIndexedIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"VkDrawIndexedIndirectCommand": {
"core": [
{
"vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
"text": " (indexSize
* (firstIndex
+ indexCount
) + offset
) must be less than or equal to the size of the bound index buffer, with indexSize
being based on the type specified by indexType
, where the index buffer, indexType
, and offset
are specified via vkCmdBindIndexBuffer
"
},
{
"vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
"text": " If the drawIndirectFirstInstance feature is not enabled, firstInstance
must be 0
"
}
]
},
"vkCmdDrawIndexedIndirectCountKHR": {
"(VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-stride-03142",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof(VkDrawIndexedIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxDrawCount-03143",
"text": " If maxDrawCount
is greater than or equal to 1
, (stride
{times} (maxDrawCount
- 1) + offset
+ sizeof(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03153",
"text": " If count stored in countBuffer
is equal to 1
, (offset
+ sizeof(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03154",
"text": " If count stored in countBuffer
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"vkCmdDrawIndirectByteCountEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02720",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have valid buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
"text": " The implementation must support VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackDraw
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
"text": " vertexStride
must be greater than 0 and less than or equal to VkPhysicalDeviceLimits::maxTransformFeedbackBufferDataStride
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
"text": " counterBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
"text": " counterBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
"text": " Both of commandBuffer
, and counterBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_EXT_transform_feedback)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"vkCmdBeginConditionalRenderingEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
"text": " Conditional rendering must not already be active"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
"text": " pConditionalRenderingBegin
must be a valid pointer to a valid VkConditionalRenderingBeginInfoEXT
structure"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"VkConditionalRenderingBeginInfoEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
bit set"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
"text": " offset
must be less than the size of buffer
by at least 32 bits."
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
"text": " offset
must be a multiple of 4"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
"text": " flags
must be a valid combination of VkConditionalRenderingFlagBitsEXT values"
}
]
},
"vkCmdEndConditionalRenderingEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
"text": " Conditional rendering must be active"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
"text": " If conditional rendering was made active outside of a render pass instance, it must not be ended inside a render pass instance"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
"text": " If conditional rendering was made active within a subpass it must be ended in the same subpass"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"vkCmdDrawMeshTasksNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
"text": " taskCount
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxDrawMeshTasksCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"vkCmdDrawMeshTasksIndirectNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718",
"text": " If the multi-draw indirect feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
"text": " If drawCount
is greater than 1
, stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawMeshTasksIndirectCommandNV
)"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"VkDrawMeshTasksIndirectCommandNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
"text": " taskCount
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxDrawMeshTasksCount
"
}
]
},
"vkCmdDrawMeshTasksIndirectCountNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02687",
"text": " Image subresources used as attachments in the current render pass must not be accessed in any way other than as an attachment by this command."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawMeshTasksIndirectCommandNV
)"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
"text": " If maxDrawCount
is greater than or equal to 1
, (stride
{times} (maxDrawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
"text": " If the count stored in countBuffer
is equal to 1
, (offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
"text": " If the count stored in countBuffer
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
."
}
],
"(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
}
]
},
"VkPipelineVertexInputStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
"text": " vertexBindingDescriptionCount
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
"text": " vertexAttributeDescriptionCount
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputAttributes
"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
"text": " For every binding
specified by each element of pVertexAttributeDescriptions
, a VkVertexInputBindingDescription
must exist in pVertexBindingDescriptions
with the same value of binding
"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
"text": " All elements of pVertexBindingDescriptions
must describe distinct binding numbers"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
"text": " All elements of pVertexAttributeDescriptions
must describe distinct attribute locations"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineVertexInputDivisorStateCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
"text": " If vertexBindingDescriptionCount
is not 0
, pVertexBindingDescriptions
must be a valid pointer to an array of vertexBindingDescriptionCount
valid VkVertexInputBindingDescription
structures"
},
{
"vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
"text": " If vertexAttributeDescriptionCount
is not 0
, pVertexAttributeDescriptions
must be a valid pointer to an array of vertexAttributeDescriptionCount
valid VkVertexInputAttributeDescription
structures"
}
]
},
"VkVertexInputBindingDescription": {
"core": [
{
"vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
"text": " binding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
"text": " stride
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindingStride
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
"text": " inputRate
must be a valid VkVertexInputRate value"
}
]
},
"VkVertexInputAttributeDescription": {
"core": [
{
"vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
"text": " location
must be less than VkPhysicalDeviceLimits
::maxVertexInputAttributes
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
"text": " binding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
"text": " offset
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputAttributeOffset
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
"text": " format
must be allowed as a vertex buffer format, as specified by the VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT
flag in VkFormatProperties
::bufferFeatures
returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
"text": " format
must be a valid VkFormat value"
}
]
},
"vkCmdBindVertexBuffers": {
"core": [
{
"vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
"text": " firstBinding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
"text": " The sum of firstBinding
and bindingCount
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
"text": " All elements of pOffsets
must be less than the size of the corresponding element in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
"text": " All elements of pBuffers
must have been created with the VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
flag"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
"text": " Each element of pBuffers
that is non-sparse must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
"text": " pBuffers
must be a valid pointer to an array of bindingCount
valid VkBuffer
handles"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
"text": " pOffsets
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
"text": " bindingCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
"text": " Both of commandBuffer
, and the elements of pBuffers
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkPipelineVertexInputDivisorStateCreateInfoEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
"text": " pVertexBindingDivisors
must be a valid pointer to an array of vertexBindingDivisorCount
VkVertexInputBindingDivisorDescriptionEXT
structures"
},
{
"vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
"text": " vertexBindingDivisorCount
must be greater than 0
"
}
]
},
"VkVertexInputBindingDivisorDescriptionEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
"text": " binding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
"text": " If the vertexAttributeInstanceRateZeroDivisor
feature is not enabled, divisor
must not be 0
"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
"text": " If the vertexAttributeInstanceRateDivisor
feature is not enabled, divisor
must be 1
"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
"text": " divisor
must be a value between 0
and VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
::maxVertexAttribDivisor
, inclusive."
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
"text": " VkVertexInputBindingDescription::inputRate
must be of type VK_VERTEX_INPUT_RATE_INSTANCE
for this binding
."
}
]
},
"VkPipelineTessellationStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
"text": " patchControlPoints
must be greater than zero and less than or equal to VkPhysicalDeviceLimits
::maxTessellationPatchSize
"
},
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineTessellationDomainOriginStateCreateInfo"
},
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkPipelineTessellationDomainOriginStateCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
"text": " domainOrigin
must be a valid VkTessellationDomainOrigin value"
}
]
},
"vkCmdBindTransformFeedbackBuffersEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
"text": " firstBinding
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
"text": " The sum of firstBinding
and bindingCount
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
"text": " All elements of pOffsets
must be less than the size of the corresponding element in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
"text": " All elements of pOffsets
must be a multiple of 4"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
"text": " All elements of pBuffers
must have been created with the VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
flag"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
"text": " If the optional pSize
array is specified, each element of pSizes
must either be VK_WHOLE_SIZE
, or be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBufferSize
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
"text": " All elements of pSizes
must be less than or equal to the size of the corresponding buffer in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
"text": " All elements of pOffsets
plus pSizes
, where the pSizes
, element is not VK_WHOLE_SIZE
, must be less than or equal to the size of the corresponding element in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
"text": " Each element of pBuffers
that is non-sparse must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
"text": " Transform feedback must not be active when the vkCmdBindTransformFeedbackBuffersEXT
command is recorded"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
"text": " pBuffers
must be a valid pointer to an array of bindingCount
valid VkBuffer
handles"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
"text": " pOffsets
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-parameter",
"text": " If pSizes
is not NULL
, pSizes
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
"text": " If pSizes
is not NULL
, bindingCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
"text": " Both of commandBuffer
, and the elements of pBuffers
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdBeginTransformFeedbackEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
"text": " Transform feedback must not be active"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
"text": " firstCounterBuffer
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
"text": " The sum of firstCounterBuffer
and counterBufferCount
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
"text": " If counterBufferCount
is not 0
, and pCounterBuffers
is not NULL
, pCounterBuffers
must be a valid pointer to an array of counterBufferCount
VkBuffer
handles that are either valid or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
"text": " For each buffer handle in the array, if it is not VK_NULL_HANDLE it must reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets
array"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
"text": " If pCounterBuffer
is NULL
, then pCounterBufferOffsets
must also be NULL
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
"text": " For each buffer handle in the pCounterBuffers
array that is not VK_NULL_HANDLE it must have been created with a usage
value containing VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
"text": " If counterBufferCount
is not 0
, and pCounterBufferOffsets
is not NULL
, pCounterBufferOffsets
must be a valid pointer to an array of counterBufferCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
"text": " Both of commandBuffer
, and the elements of pCounterBuffers
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
"text": " Transform feedback must not be made active in a render pass instance with multiview enabled"
}
]
},
"vkCmdEndTransformFeedbackEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
"text": " Transform feedback must be active"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
"text": " firstCounterBuffer
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
"text": " The sum of firstCounterBuffer
and counterBufferCount
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
"text": " If counterBufferCount
is not 0
, and pCounterBuffers
is not NULL
, pCounterBuffers
must be a valid pointer to an array of counterBufferCount
VkBuffer
handles that are either valid or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
"text": " For each buffer handle in the array, if it is not VK_NULL_HANDLE it must reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets
array"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
"text": " If pCounterBuffer
is NULL
, then pCounterBufferOffsets
must also be NULL
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
"text": " For each buffer handle in the pCounterBuffers
array that is not VK_NULL_HANDLE it must have been created with a usage
value containing VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
"text": " If counterBufferCount
is not 0
, and pCounterBufferOffsets
is not NULL
, pCounterBufferOffsets
must be a valid pointer to an array of counterBufferCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
"text": " Both of commandBuffer
, and the elements of pCounterBuffers
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkPipelineViewportSwizzleStateCreateInfoNV": {
"(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
"text": " viewportCount
must match the viewportCount
set in VkPipelineViewportStateCreateInfo
"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
"text": " pViewportSwizzles
must be a valid pointer to an array of viewportCount
valid VkViewportSwizzleNV
structures"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"VkViewportSwizzleNV": {
"(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-VkViewportSwizzleNV-x-parameter",
"text": " x
must be a valid VkViewportCoordinateSwizzleNV value"
},
{
"vuid": "VUID-VkViewportSwizzleNV-y-parameter",
"text": " y
must be a valid VkViewportCoordinateSwizzleNV value"
},
{
"vuid": "VUID-VkViewportSwizzleNV-z-parameter",
"text": " z
must be a valid VkViewportCoordinateSwizzleNV value"
},
{
"vuid": "VUID-VkViewportSwizzleNV-w-parameter",
"text": " w
must be a valid VkViewportCoordinateSwizzleNV value"
}
]
},
"VkPipelineViewportWScalingStateCreateInfoNV": {
"(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"vkCmdSetViewportWScalingNV": {
"(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-None-01322",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
"text": " firstViewport
must be less than VkPhysicalDeviceLimits::maxViewports
"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
"text": " The sum of firstViewport
and viewportCount
must be between 1
and VkPhysicalDeviceLimits::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
"text": " pViewportWScalings
must be a valid pointer to an array of viewportCount
VkViewportWScalingNV
structures"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"VkPipelineViewportStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
"text": " If the multiple viewports feature is not enabled, viewportCount
must be 1
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
"text": " If the multiple viewports feature is not enabled, scissorCount
must be 1
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
"text": " viewportCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
"text": " scissorCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
"text": " scissorCount
and viewportCount
must be identical"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineViewportCoarseSampleOrderStateCreateInfoNV, VkPipelineViewportExclusiveScissorStateCreateInfoNV, VkPipelineViewportShadingRateImageStateCreateInfoNV, VkPipelineViewportSwizzleStateCreateInfoNV, or VkPipelineViewportWScalingStateCreateInfoNV"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
"text": " scissorCount
must be greater than 0
"
}
],
"(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
"text": " If the viewportWScalingEnable
member of a VkPipelineViewportWScalingStateCreateInfoNV structure chained to the pNext
chain is VK_TRUE
, the viewportCount
member of the VkPipelineViewportWScalingStateCreateInfoNV structure must be equal to viewportCount
"
}
]
},
"vkCmdSetViewport": {
"core": [
{
"vuid": "VUID-vkCmdSetViewport-None-01221",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_VIEWPORT
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
"text": " firstViewport
must be less than VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
"text": " The sum of firstViewport
and viewportCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
"text": " If the multiple viewports feature is not enabled, firstViewport
must be 0
"
},
{
"vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
"text": " If the multiple viewports feature is not enabled, viewportCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
"text": " pViewports
must be a valid pointer to an array of viewportCount
valid VkViewport
structures"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"VkViewport": {
"core": [
{
"vuid": "VUID-VkViewport-width-01770",
"text": " width
must be greater than 0.0
"
},
{
"vuid": "VUID-VkViewport-width-01771",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxViewportDimensions
[0]"
},
{
"vuid": "VUID-VkViewport-height-01773",
"text": " The absolute value of height
must be less than or equal to VkPhysicalDeviceLimits
::maxViewportDimensions
[1]"
},
{
"vuid": "VUID-VkViewport-x-01774",
"text": " x
must be greater than or equal to viewportBoundsRange
[0]"
},
{
"vuid": "VUID-VkViewport-x-01232",
"text": " (x
+ width
) must be less than or equal to viewportBoundsRange
[1]"
},
{
"vuid": "VUID-VkViewport-y-01775",
"text": " y
must be greater than or equal to viewportBoundsRange
[0]"
},
{
"vuid": "VUID-VkViewport-y-01233",
"text": " (y
+ height
) must be less than or equal to viewportBoundsRange
[1]"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
{
"vuid": "VUID-VkViewport-height-01772",
"text": " height
must be greater than 0.0
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
{
"vuid": "VUID-VkViewport-y-01776",
"text": " y
must be less than or equal to viewportBoundsRange
[1]"
},
{
"vuid": "VUID-VkViewport-y-01777",
"text": " (y
+ height
) must be greater than or equal to viewportBoundsRange
[0]"
}
],
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkViewport-minDepth-01234",
"text": " Unless VK_EXT_depth_range_unrestricted
extension is enabled minDepth
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-VkViewport-maxDepth-01235",
"text": " Unless VK_EXT_depth_range_unrestricted
extension is enabled maxDepth
must be between 0.0
and 1.0
, inclusive"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkViewport-minDepth-02540",
"text": " minDepth
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-VkViewport-maxDepth-02541",
"text": " maxDepth
must be between 0.0
and 1.0
, inclusive"
}
]
},
"VkPipelineRasterizationStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
"text": " If the depth clamping feature is not enabled, depthClampEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineRasterizationConservativeStateCreateInfoEXT, VkPipelineRasterizationDepthClipStateCreateInfoEXT, VkPipelineRasterizationStateRasterizationOrderAMD, or VkPipelineRasterizationStateStreamCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
"text": " polygonMode
must be a valid VkPolygonMode value"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
"text": " cullMode
must be a valid combination of VkCullModeFlagBits values"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
"text": " frontFace
must be a valid VkFrontFace value"
}
],
"!(VK_NV_fill_rectangle)": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
"text": " If the non-solid fill modes feature is not enabled, polygonMode
must be VK_POLYGON_MODE_FILL
"
}
],
"(VK_NV_fill_rectangle)": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
"text": " If the non-solid fill modes feature is not enabled, polygonMode
must be VK_POLYGON_MODE_FILL
or VK_POLYGON_MODE_FILL_RECTANGLE_NV
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
"text": " If the VK_NV_fill_rectangle
extension is not enabled, polygonMode
must not be VK_POLYGON_MODE_FILL_RECTANGLE_NV
"
}
]
},
"VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
"(VK_EXT_depth_clip_enable)": [
{
"vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkPipelineMultisampleStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
"text": " If the sample rate shading feature is not enabled, sampleShadingEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
"text": " If the alpha to one feature is not enabled, alphaToOneEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
"text": " minSampleShading
must be in the range [0,1]"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineCoverageModulationStateCreateInfoNV, VkPipelineCoverageReductionStateCreateInfoNV, VkPipelineCoverageToColorStateCreateInfoNV, or VkPipelineSampleLocationsStateCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
"text": " rasterizationSamples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
"text": " If pSampleMask
is not NULL
, pSampleMask
must be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) VkSampleMask
values"
}
],
"(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the subpass has any color attachments and rasterizationSamples
is greater than the number of color samples, then sampleShadingEnable
must be VK_FALSE
"
}
]
},
"VkPipelineRasterizationStateStreamCreateInfoEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::geometryStreams
must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
"text": " rasterizationStream
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
"text": " rasterizationStream
must be zero if VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackRasterizationStreamSelect
is VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkPipelineRasterizationStateRasterizationOrderAMD": {
"(VK_AMD_rasterization_order)": [
{
"vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
"text": " rasterizationOrder
must be a valid VkRasterizationOrderAMD value"
}
]
},
"VkPipelineSampleLocationsStateCreateInfoEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
"text": " sampleLocationsInfo
must be a valid VkSampleLocationsInfoEXT
structure"
}
]
},
"VkSampleLocationsInfoEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
"text": " sampleLocationsPerPixel
must be a bit value that is set in VkPhysicalDeviceSampleLocationsPropertiesEXT::sampleLocationSampleCounts
"
},
{
"vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
"text": " sampleLocationsCount
must equal sampleLocationsPerPixel
{times} sampleLocationGridSize.width
{times} sampleLocationGridSize.height
"
},
{
"vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT
"
},
{
"vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
"text": " If sampleLocationsPerPixel
is not 0
, sampleLocationsPerPixel
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
"text": " If sampleLocationsCount
is not 0
, pSampleLocations
must be a valid pointer to an array of sampleLocationsCount
VkSampleLocationEXT
structures"
}
]
},
"vkCmdSetSampleLocationsEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-None-01528",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
"text": " The sampleLocationsPerPixel
member of pSampleLocationsInfo
must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
"text": " If VkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations
is VK_FALSE
then the current render pass must have been begun by specifying a VkRenderPassSampleLocationsBeginInfoEXT structure whose pPostSubpassSampleLocations
member contains an element with a subpassIndex
matching the current subpass index and the sampleLocationsInfo
member of that element must match the sample locations state pointed to by pSampleLocationsInfo
"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
"text": " pSampleLocationsInfo
must be a valid pointer to a valid VkSampleLocationsInfoEXT
structure"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"VkPipelineViewportShadingRateImageStateCreateInfoNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
"text": " If the multiple viewports feature is not enabled, viewportCount
must be 0
or 1
"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
"text": " viewportCount
must be less than or equal to VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
"text": " If shadingRateImageEnable
is VK_TRUE
, viewportCount
must be equal to the viewportCount
member of VkPipelineViewportStateCreateInfo
"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
, pShadingRatePalettes
must be a valid pointer to an array of viewportCount
VkShadingRatePaletteNV
structures"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pShadingRatePalettes-parameter",
"text": " If viewportCount
is not 0
, and pShadingRatePalettes
is not NULL
, pShadingRatePalettes
must be a valid pointer to an array of viewportCount
valid VkShadingRatePaletteNV
structures"
}
]
},
"vkCmdBindShadingRateImageNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
"text": " The shading rate image feature must be enabled."
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
"text": " If imageView
is not VK_NULL_HANDLE, it must be a valid VkImageView handle of type VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
."
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
"text": " If imageView
is not VK_NULL_HANDLE, it must have a format of VK_FORMAT_R8_UINT
."
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
"text": " If imageView
is not VK_NULL_HANDLE, it must have been created with a usage
value including VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must match the actual VkImageLayout of each subresource accessible from imageView
at the time the subresource is accessed."
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must be VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
or VK_IMAGE_LAYOUT_GENERAL
."
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView
handle"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
"text": " Both of commandBuffer
, and imageView
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdSetViewportShadingRatePaletteNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
"text": " The shading rate image feature must be enabled."
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02065",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066",
"text": " firstViewport
must be less than VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
"text": " The sum of firstViewport
and viewportCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
"text": " If the multiple viewports feature is not enabled, firstViewport
must be 0
"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
"text": " If the multiple viewports feature is not enabled, viewportCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
"text": " pShadingRatePalettes
must be a valid pointer to an array of viewportCount
valid VkShadingRatePaletteNV
structures"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"VkShadingRatePaletteNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
"text": " shadingRatePaletteEntryCount
must be between 1
and VkPhysicalDeviceShadingRateImagePropertiesNV
::shadingRatePaletteSize
, inclusive"
},
{
"vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
"text": " pShadingRatePaletteEntries
must be a valid pointer to an array of shadingRatePaletteEntryCount
valid VkShadingRatePaletteEntryNV values"
},
{
"vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
"text": " shadingRatePaletteEntryCount
must be greater than 0
"
}
]
},
"VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
"text": " If sampleOrderType
is not VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV
, customSamplerOrderCount
must be 0
"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
"text": " The array pCustomSampleOrders
must not contain two structures with matching values for both the shadingRate
and sampleCount
members."
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
"text": " sampleOrderType
must be a valid VkCoarseSampleOrderTypeNV value"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
"text": " If customSampleOrderCount
is not 0
, pCustomSampleOrders
must be a valid pointer to an array of customSampleOrderCount
valid VkCoarseSampleOrderCustomNV
structures"
}
]
},
"VkCoarseSampleOrderCustomNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
"text": " shadingRate
must be a shading rate that generates fragments with more than one pixel."
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
"text": " sampleCount
must correspond to a sample count enumerated in VkSampleCountFlags whose corresponding bit is set in VkPhysicalDeviceLimits::framebufferNoAttachmentsSampleCounts
."
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
"text": " sampleLocationCount
must be equal to the product of sampleCount
, the fragment width for shadingRate
, and the fragment height for shadingRate
."
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
"text": " sampleLocationCount
must be less than or equal to the value of VkPhysicalDeviceShadingRateImagePropertiesNV
::shadingRateMaxCoarseSamples
."
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
"text": " The array pSampleLocations
must contain exactly one entry for every combination of valid values for pixelX
, pixelY
, and sample
in the structure VkCoarseSampleOrderCustomNV."
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
"text": " shadingRate
must be a valid VkShadingRatePaletteEntryNV value"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
"text": " pSampleLocations
must be a valid pointer to an array of sampleLocationCount
VkCoarseSampleLocationNV
structures"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
"text": " sampleLocationCount
must be greater than 0
"
}
]
},
"VkCoarseSampleLocationNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
"text": " pixelX
must be less than the width (in pixels) of the fragment."
},
{
"vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
"text": " pixelY
must be less than the height (in pixels) of the fragment."
},
{
"vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
"text": " sample
must be less than the number of coverage samples in each pixel belonging to the fragment."
}
]
},
"vkCmdSetCoarseSampleOrderNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
"text": " If sampleOrderType
is not VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV
, customSamplerOrderCount
must be 0
"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
"text": " The array pCustomSampleOrders
must not contain two structures with matching values for both the shadingRate
and sampleCount
members."
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
"text": " sampleOrderType
must be a valid VkCoarseSampleOrderTypeNV value"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
"text": " If customSampleOrderCount
is not 0
, pCustomSampleOrders
must be a valid pointer to an array of customSampleOrderCount
valid VkCoarseSampleOrderCustomNV
structures"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"vkCmdSetLineWidth": {
"core": [
{
"vuid": "VUID-vkCmdSetLineWidth-None-00787",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_LINE_WIDTH
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
"text": " If the wide lines feature is not enabled, lineWidth
must be 1.0
"
},
{
"vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"vkCmdSetDepthBias": {
"core": [
{
"vuid": "VUID-vkCmdSetDepthBias-None-00789",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BIAS
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
"text": " If the depth bias clamping feature is not enabled, depthBiasClamp
must be 0.0
"
},
{
"vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"VkPipelineRasterizationConservativeStateCreateInfoEXT": {
"(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
"text": " extraPrimitiveOverestimationSize
must be in the range of 0.0
to VkPhysicalDeviceConservativeRasterizationPropertiesEXT
::maxExtraPrimitiveOverestimationSize
inclusive"
},
{
"vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
"text": " conservativeRasterizationMode
must be a valid VkConservativeRasterizationModeEXT value"
}
]
},
"VkPipelineDiscardRectangleStateCreateInfoEXT": {
"(VK_EXT_discard_rectangles)": [
{
"vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
"text": " discardRectangleCount
must be between 0
and VkPhysicalDeviceDiscardRectanglePropertiesEXT
::maxDiscardRectangles
, inclusive"
},
{
"vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
"text": " discardRectangleMode
must be a valid VkDiscardRectangleModeEXT value"
}
]
},
"vkCmdSetDiscardRectangleEXT": {
"(VK_EXT_discard_rectangles)": [
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-None-00583",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
"text": " The sum of firstDiscardRectangle
and discardRectangleCount
must be less than or equal to VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles
"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
"text": " The x
and y
member of offset
in each VkRect2D element of pDiscardRectangles
must be greater than or equal to 0
"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
"text": " Evaluation of (offset.x
+ extent.width
) in each VkRect2D element of pDiscardRectangles
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
"text": " Evaluation of (offset.y
+ extent.height
) in each VkRect2D element of pDiscardRectangles
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
"text": " pDiscardRectangles
must be a valid pointer to an array of discardRectangleCount
VkRect2D
structures"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
"text": " discardRectangleCount
must be greater than 0
"
}
]
},
"vkCmdSetScissor": {
"core": [
{
"vuid": "VUID-vkCmdSetScissor-None-00590",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_SCISSOR
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
"text": " firstScissor
must be less than VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
"text": " The sum of firstScissor
and scissorCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
"text": " If the multiple viewports feature is not enabled, firstScissor
must be 0
"
},
{
"vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
"text": " If the multiple viewports feature is not enabled, scissorCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetScissor-x-00595",
"text": " The x
and y
members of offset
must be greater than or equal to 0
"
},
{
"vuid": "VUID-vkCmdSetScissor-offset-00596",
"text": " Evaluation of (offset.x
+ extent.width
) must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetScissor-offset-00597",
"text": " Evaluation of (offset.y
+ extent.height
) must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
"text": " pScissors
must be a valid pointer to an array of scissorCount
VkRect2D
structures"
},
{
"vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
"text": " scissorCount
must be greater than 0
"
}
]
},
"VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
"text": " If the multiple viewports feature is not enabled, exclusiveScissorCount
must be 0
or 1
"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
"text": " exclusiveScissorCount
must be less than or equal to VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
"text": " exclusiveScissorCount
must be 0
or identical to the viewportCount
member of VkPipelineViewportStateCreateInfo
"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030",
"text": " If no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
and exclusiveScissorCount
is not 0
, pExclusiveScissors
must be a valid pointer to an array of exclusiveScissorCount
VkRect2D
structures"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pExclusiveScissors-parameter",
"text": " If exclusiveScissorCount
is not 0
, and pExclusiveScissors
is not NULL
, pExclusiveScissors
must be a valid pointer to an array of exclusiveScissorCount
VkRect2D
structures"
}
]
},
"vkCmdSetExclusiveScissorNV": {
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
"text": " The exclusive scissor feature must be enabled."
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02032",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033",
"text": " firstExclusiveScissor
must be less than VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
"text": " The sum of firstExclusiveScissor
and exclusiveScissorCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
"text": " If the multiple viewports feature is not enabled, firstExclusiveScissor
must be 0
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
"text": " If the multiple viewports feature is not enabled, exclusiveScissorCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
"text": " The x
and y
members of offset
in each member of pExclusiveScissors
must be greater than or equal to 0
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
"text": " Evaluation of (offset.x
+ extent.width
) for each member of pExclusiveScissors
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
"text": " Evaluation of (offset.y
+ extent.height
) for each member of pExclusiveScissors
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
"text": " pExclusiveScissors
must be a valid pointer to an array of exclusiveScissorCount
VkRect2D
structures"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
"text": " exclusiveScissorCount
must be greater than 0
"
}
]
},
"VkPipelineDepthStencilStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
"text": " If the depth bounds testing feature is not enabled, depthBoundsTestEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
"text": " depthCompareOp
must be a valid VkCompareOp value"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
"text": " front
must be a valid VkStencilOpState
structure"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
"text": " back
must be a valid VkStencilOpState
structure"
}
]
},
"vkCmdSetDepthBounds": {
"core": [
{
"vuid": "VUID-vkCmdSetDepthBounds-None-00599",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_DEPTH_BOUNDS
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
],
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
"text": " Unless the VK_EXT_depth_range_unrestricted
extension is enabled minDepthBounds
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
"text": " Unless the VK_EXT_depth_range_unrestricted
extension is enabled maxDepthBounds
must be between 0.0
and 1.0
, inclusive"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
"text": " minDepthBounds
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
"text": " maxDepthBounds
must be between 0.0
and 1.0
, inclusive"
}
]
},
"VkStencilOpState": {
"core": [
{
"vuid": "VUID-VkStencilOpState-failOp-parameter",
"text": " failOp
must be a valid VkStencilOp value"
},
{
"vuid": "VUID-VkStencilOpState-passOp-parameter",
"text": " passOp
must be a valid VkStencilOp value"
},
{
"vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
"text": " depthFailOp
must be a valid VkStencilOp value"
},
{
"vuid": "VUID-VkStencilOpState-compareOp-parameter",
"text": " compareOp
must be a valid VkCompareOp value"
}
]
},
"vkCmdSetStencilCompareMask": {
"core": [
{
"vuid": "VUID-vkCmdSetStencilCompareMask-None-00602",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"vkCmdSetStencilWriteMask": {
"core": [
{
"vuid": "VUID-vkCmdSetStencilWriteMask-None-00603",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"vkCmdSetStencilReference": {
"core": [
{
"vuid": "VUID-vkCmdSetStencilReference-None-00604",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_STENCIL_REFERENCE
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
"(VK_NV_representative_fragment_test)": [
{
"vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
"
}
]
},
"VkPipelineCoverageToColorStateCreateInfoNV": {
"(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
"text": " If coverageToColorEnable
is VK_TRUE
, then the render pass subpass indicated by VkGraphicsPipelineCreateInfo::renderPass
and VkGraphicsPipelineCreateInfo::subpass
must have a color attachment at the location selected by coverageToColorLocation
, with a VkFormat of VK_FORMAT_R8_UINT
, VK_FORMAT_R8_SINT
, VK_FORMAT_R16_UINT
, VK_FORMAT_R16_SINT
, VK_FORMAT_R32_UINT
, or VK_FORMAT_R32_SINT
"
},
{
"vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkPipelineCoverageReductionStateCreateInfoNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter",
"text": " coverageReductionMode
must be a valid VkCoverageReductionModeNV value"
}
]
},
"vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter",
"text": " pCombinationCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter",
"text": " If the value referenced by pCombinationCount
is not 0
, and pCombinations
is not NULL
, pCombinations
must be a valid pointer to an array of pCombinationCount
VkFramebufferMixedSamplesCombinationNV
structures"
}
]
},
"VkFramebufferMixedSamplesCombinationNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
"
},
{
"vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkPipelineCoverageModulationStateCreateInfoNV": {
"(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
"text": " If coverageModulationTableEnable
is VK_TRUE
, coverageModulationTableCount
must be equal to the number of rasterization samples divided by the number of color samples in the subpass."
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
"text": " coverageModulationMode
must be a valid VkCoverageModulationModeNV value"
}
]
},
"VkPipelineColorBlendStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
"text": " If the independent blending feature is not enabled, all elements of pAttachments
must be identical"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
"text": " If the logic operations feature is not enabled, logicOpEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
"text": " If logicOpEnable
is VK_TRUE
, logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineColorBlendAdvancedStateCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkPipelineColorBlendAttachmentState
structures"
}
]
},
"VkPipelineColorBlendAttachmentState": {
"core": [
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
"text": " If the dual source blending feature is not enabled, srcColorBlendFactor
must not be VK_BLEND_FACTOR_SRC1_COLOR
, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
, VK_BLEND_FACTOR_SRC1_ALPHA
, or VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
"text": " If the dual source blending feature is not enabled, dstColorBlendFactor
must not be VK_BLEND_FACTOR_SRC1_COLOR
, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
, VK_BLEND_FACTOR_SRC1_ALPHA
, or VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
"text": " If the dual source blending feature is not enabled, srcAlphaBlendFactor
must not be VK_BLEND_FACTOR_SRC1_COLOR
, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
, VK_BLEND_FACTOR_SRC1_ALPHA
, or VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
"text": " If the dual source blending feature is not enabled, dstAlphaBlendFactor
must not be VK_BLEND_FACTOR_SRC1_COLOR
, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
, VK_BLEND_FACTOR_SRC1_ALPHA
, or VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
"text": " srcColorBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
"text": " dstColorBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
"text": " colorBlendOp
must be a valid VkBlendOp value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
"text": " srcAlphaBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
"text": " dstAlphaBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
"text": " alphaBlendOp
must be a valid VkBlendOp value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
"text": " colorWriteMask
must be a valid combination of VkColorComponentFlagBits values"
}
],
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
"text": " If either of colorBlendOp
or alphaBlendOp
is an advanced blend operation, then colorBlendOp
must equal alphaBlendOp
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlend
is VK_FALSE
and colorBlendOp
is an advanced blend operation, then colorBlendOp
must be the same for all attachments."
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlend
is VK_FALSE
and alphaBlendOp
is an advanced blend operation, then alphaBlendOp
must be the same for all attachments."
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendAllOperations
is VK_FALSE
, then colorBlendOp
must not be VK_BLEND_OP_ZERO_EXT
, VK_BLEND_OP_SRC_EXT
, VK_BLEND_OP_DST_EXT
, VK_BLEND_OP_SRC_OVER_EXT
, VK_BLEND_OP_DST_OVER_EXT
, VK_BLEND_OP_SRC_IN_EXT
, VK_BLEND_OP_DST_IN_EXT
, VK_BLEND_OP_SRC_OUT_EXT
, VK_BLEND_OP_DST_OUT_EXT
, VK_BLEND_OP_SRC_ATOP_EXT
, VK_BLEND_OP_DST_ATOP_EXT
, VK_BLEND_OP_XOR_EXT
, VK_BLEND_OP_INVERT_EXT
, VK_BLEND_OP_INVERT_RGB_EXT
, VK_BLEND_OP_LINEARDODGE_EXT
, VK_BLEND_OP_LINEARBURN_EXT
, VK_BLEND_OP_VIVIDLIGHT_EXT
, VK_BLEND_OP_LINEARLIGHT_EXT
, VK_BLEND_OP_PINLIGHT_EXT
, VK_BLEND_OP_HARDMIX_EXT
, VK_BLEND_OP_PLUS_EXT
, VK_BLEND_OP_PLUS_CLAMPED_EXT
, VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT
, VK_BLEND_OP_PLUS_DARKER_EXT
, VK_BLEND_OP_MINUS_EXT
, VK_BLEND_OP_MINUS_CLAMPED_EXT
, VK_BLEND_OP_CONTRAST_EXT
, VK_BLEND_OP_INVERT_OVG_EXT
, VK_BLEND_OP_RED_EXT
, VK_BLEND_OP_GREEN_EXT
, or VK_BLEND_OP_BLUE_EXT
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
"text": " If colorBlendOp
or alphaBlendOp
is an advanced blend operation, then VkSubpassDescription::colorAttachmentCount
of the subpass this pipeline is compiled against must be less than or equal to VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendMaxColorAttachments"
}
]
},
"vkCmdSetBlendConstants": {
"core": [
{
"vuid": "VUID-vkCmdSetBlendConstants-None-00612",
"text": " The bound graphics pipeline must have been created with the VK_DYNAMIC_STATE_BLEND_CONSTANTS
dynamic state enabled"
},
{
"vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
"text": " If the non-premultiplied source color property is not supported, srcPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
"text": " If the non-premultiplied destination color property is not supported, dstPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
"text": " If the correlated overlap property is not supported, blendOverlap
must be VK_BLEND_OVERLAP_UNCORRELATED_EXT
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
"text": " blendOverlap
must be a valid VkBlendOverlapEXT value"
}
]
},
"vkCmdDispatch": {
"core": [
{
"vuid": "VUID-vkCmdDispatch-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatch-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatch-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatch-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDispatch-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatch-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatch-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatch-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatch-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatch-groupCountX-00386",
"text": " groupCountX
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdDispatch-groupCountY-00387",
"text": " groupCountY
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
"text": " groupCountZ
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdDispatch-renderpass",
"text": " This command must only be called outside of a render pass instance"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDispatch-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point must not write to any resource"
}
]
},
"vkCmdDispatchIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
"text": " The sum of offset
and the size of VkDispatchIndirectCommand
must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
]
},
"VkDispatchIndirectCommand": {
"core": [
{
"vuid": "VUID-VkDispatchIndirectCommand-x-00417",
"text": " x
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-VkDispatchIndirectCommand-y-00418",
"text": " y
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-VkDispatchIndirectCommand-z-00419",
"text": " z
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
}
]
},
"vkCmdDispatchBase": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
"text": " baseGroupX
must be less than VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
"text": " baseGroupX
must be less than VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
"text": " baseGroupZ
must be less than VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
"text": " groupCountX
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] minus baseGroupX
"
},
{
"vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
"text": " groupCountY
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] minus baseGroupY
"
},
{
"vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
"text": " groupCountZ
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] minus baseGroupZ
"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
"text": " If any of baseGroupX
, baseGroupY
, or baseGroupZ
are not zero, then the bound compute pipeline must have been created with the VK_PIPELINE_CREATE_DISPATCH_BASE
flag."
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdDispatchBase-renderpass",
"text": " This command must only be called outside of a render pass instance"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchBase-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDispatchBase-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
}
]
},
"vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter",
"text": " pFeatures
must be a valid pointer to a VkDeviceGeneratedCommandsFeaturesNVX
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter",
"text": " pLimits
must be a valid pointer to a VkDeviceGeneratedCommandsLimitsNVX
structure"
}
]
},
"VkDeviceGeneratedCommandsFeaturesNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX
"
},
{
"vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkDeviceGeneratedCommandsLimitsNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX
"
},
{
"vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCreateObjectTableNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkCreateObjectTableNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkObjectTableCreateInfoNVX
structure"
},
{
"vuid": "VUID-vkCreateObjectTableNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateObjectTableNVX-pObjectTable-parameter",
"text": " pObjectTable
must be a valid pointer to a VkObjectTableNVX
handle"
}
]
},
"VkObjectTableCreateInfoNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-computeBindingPointSupport-01355",
"text": " If the VkDeviceGeneratedCommandsFeaturesNVX
::computeBindingPointSupport
feature is not enabled, pObjectEntryUsageFlags
must not contain VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-01356",
"text": " Any value within pObjectEntryCounts
must not exceed VkDeviceGeneratedCommandsLimitsNVX
::maxObjectEntryCounts
"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-maxUniformBuffersPerDescriptor-01357",
"text": " maxUniformBuffersPerDescriptor
must be within the limits supported by the device."
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageBuffersPerDescriptor-01358",
"text": " maxStorageBuffersPerDescriptor
must be within the limits supported by the device."
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageImagesPerDescriptor-01359",
"text": " maxStorageImagesPerDescriptor
must be within the limits supported by the device."
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-maxSampledImagesPerDescriptor-01360",
"text": " maxSampledImagesPerDescriptor
must be within the limits supported by the device."
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX
"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryTypes-parameter",
"text": " pObjectEntryTypes
must be a valid pointer to an array of objectCount
valid VkObjectEntryTypeNVX values"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter",
"text": " pObjectEntryCounts
must be a valid pointer to an array of objectCount
uint32_t
values"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-parameter",
"text": " pObjectEntryUsageFlags
must be a valid pointer to an array of objectCount
valid combinations of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-requiredbitmask",
"text": " Each element of pObjectEntryUsageFlags
must not be 0
"
},
{
"vuid": "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength",
"text": " objectCount
must be greater than 0
"
}
]
},
"vkDestroyObjectTableNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01361",
"text": " All submitted commands that refer to objectTable
must have completed execution."
},
{
"vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01362",
"text": " If VkAllocationCallbacks
were provided when objectTable
was created, a compatible set of callbacks must be provided here."
},
{
"vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01363",
"text": " If no VkAllocationCallbacks
were provided when objectTable
was created, pAllocator
must be NULL
."
},
{
"vuid": "VUID-vkDestroyObjectTableNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parameter",
"text": " objectTable
must be a valid VkObjectTableNVX
handle"
},
{
"vuid": "VUID-vkDestroyObjectTableNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parent",
"text": " objectTable
must have been created, allocated, or retrieved from device
"
}
]
},
"vkRegisterObjectsNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkRegisterObjectsNVX-pObjectTableEntry-01364",
"text": " The contents of pObjectTableEntry
must yield plausible bindings supported by the device."
},
{
"vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01365",
"text": " At any pObjectIndices
there must not be a registered resource already."
},
{
"vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01366",
"text": " Any value inside pObjectIndices
must be below the appropriate VkObjectTableCreateInfoNVX
::pObjectEntryCounts
limits provided at objectTable
creation time."
},
{
"vuid": "VUID-vkRegisterObjectsNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkRegisterObjectsNVX-objectTable-parameter",
"text": " objectTable
must be a valid VkObjectTableNVX
handle"
},
{
"vuid": "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter",
"text": " ppObjectTableEntries
must be a valid pointer to an array of objectCount
valid VkObjectTableEntryNVX
structures"
},
{
"vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter",
"text": " pObjectIndices
must be a valid pointer to an array of objectCount
uint32_t
values"
},
{
"vuid": "VUID-vkRegisterObjectsNVX-objectCount-arraylength",
"text": " objectCount
must be greater than 0
"
},
{
"vuid": "VUID-vkRegisterObjectsNVX-objectTable-parent",
"text": " objectTable
must have been created, allocated, or retrieved from device
"
}
]
},
"VkObjectTableEntryNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTableEntryNVX-computeBindingPointSupport-01367",
"text": " If the VkDeviceGeneratedCommandsFeaturesNVX
::computeBindingPointSupport
feature is not enabled, flags
must not contain VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
"
},
{
"vuid": "VUID-VkObjectTableEntryNVX-type-parameter",
"text": " type
must be a valid VkObjectEntryTypeNVX value"
},
{
"vuid": "VUID-VkObjectTableEntryNVX-flags-parameter",
"text": " flags
must be a valid combination of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTableEntryNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
}
]
},
"VkObjectTablePipelineEntryNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTablePipelineEntryNVX-type-01368",
"text": " type
must be VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX
"
},
{
"vuid": "VUID-VkObjectTablePipelineEntryNVX-type-parameter",
"text": " type
must be a valid VkObjectEntryTypeNVX value"
},
{
"vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-parameter",
"text": " flags
must be a valid combination of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-VkObjectTablePipelineEntryNVX-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline
handle"
}
]
},
"VkObjectTableDescriptorSetEntryNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-01369",
"text": " type
must be VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX
"
},
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-parameter",
"text": " type
must be a valid VkObjectEntryTypeNVX value"
},
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-parameter",
"text": " flags
must be a valid combination of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-pipelineLayout-parameter",
"text": " pipelineLayout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-descriptorSet-parameter",
"text": " descriptorSet
must be a valid VkDescriptorSet
handle"
},
{
"vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-commonparent",
"text": " Both of descriptorSet
, and pipelineLayout
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkObjectTableVertexBufferEntryNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-01370",
"text": " type
must be VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX
"
},
{
"vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-parameter",
"text": " type
must be a valid VkObjectEntryTypeNVX value"
},
{
"vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-parameter",
"text": " flags
must be a valid combination of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-VkObjectTableVertexBufferEntryNVX-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
}
]
},
"VkObjectTableIndexBufferEntryNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-01371",
"text": " type
must be VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX
"
},
{
"vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-parameter",
"text": " type
must be a valid VkObjectEntryTypeNVX value"
},
{
"vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-parameter",
"text": " flags
must be a valid combination of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-VkObjectTableIndexBufferEntryNVX-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
}
]
},
"VkObjectTablePushConstantEntryNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-01372",
"text": " type
must be VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
"
},
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-parameter",
"text": " type
must be a valid VkObjectEntryTypeNVX value"
},
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-parameter",
"text": " flags
must be a valid combination of VkObjectEntryUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-pipelineLayout-parameter",
"text": " pipelineLayout
must be a valid VkPipelineLayout
handle"
},
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-parameter",
"text": " stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-requiredbitmask",
"text": " stageFlags
must not be 0
"
}
]
},
"vkUnregisterObjectsNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-01373",
"text": " At any pObjectIndices
there must be a registered resource already."
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-01374",
"text": " The pObjectEntryTypes
of the resource at pObjectIndices
must match."
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-None-01375",
"text": " All operations on the device using the registered resource must have been completed."
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parameter",
"text": " objectTable
must be a valid VkObjectTableNVX
handle"
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter",
"text": " pObjectEntryTypes
must be a valid pointer to an array of objectCount
valid VkObjectEntryTypeNVX values"
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter",
"text": " pObjectIndices
must be a valid pointer to an array of objectCount
uint32_t
values"
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-objectCount-arraylength",
"text": " objectCount
must be greater than 0
"
},
{
"vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parent",
"text": " objectTable
must have been created, allocated, or retrieved from device
"
}
]
},
"VkIndirectCommandsLayoutTokenNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-bindingUnit-01342",
"text": " bindingUnit
must stay within device supported limits for the appropriate commands."
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-dynamicCount-01343",
"text": " dynamicCount
must stay within device supported limits for the appropriate commands."
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-divisor-01344",
"text": " divisor
must be greater than 0
and a power of two."
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter",
"text": " tokenType
must be a valid VkIndirectCommandsTokenTypeNVX value"
}
]
},
"VkIndirectCommandsTokenNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-01345",
"text": " The buffer
’s usage flag must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set."
},
{
"vuid": "VUID-VkIndirectCommandsTokenNVX-offset-01346",
"text": " The offset
must be aligned to VkDeviceGeneratedCommandsLimitsNVX
::minCommandsTokenBufferOffsetAlignment
."
},
{
"vuid": "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter",
"text": " tokenType
must be a valid VkIndirectCommandsTokenTypeNVX value"
},
{
"vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
}
]
},
"vkCreateIndirectCommandsLayoutNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkIndirectCommandsLayoutCreateInfoNVX
structure"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter",
"text": " pIndirectCommandsLayout
must be a valid pointer to a VkIndirectCommandsLayoutNVX
handle"
}
]
},
"VkIndirectCommandsLayoutCreateInfoNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-01347",
"text": " tokenCount
must be greater than 0
and below VkDeviceGeneratedCommandsLimitsNVX
::maxIndirectCommandsLayoutTokenCount
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-computeBindingPointSupport-01348",
"text": " If the VkDeviceGeneratedCommandsFeaturesNVX
::computeBindingPointSupport
feature is not enabled, then pipelineBindPoint
must not be VK_PIPELINE_BIND_POINT_COMPUTE
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01349",
"text": " If pTokens
contains an entry of VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX
it must be the first element of the array and there must be only a single element of such token type."
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01350",
"text": " All state binding tokens in pTokens
must occur prior work provoking tokens (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX
, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX
, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
)."
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01351",
"text": " The content of pTokens
must include one single work provoking token that is compatible with the pipelineBindPoint
."
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter",
"text": " flags
must be a valid combination of VkIndirectCommandsLayoutUsageFlagBitsNVX values"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter",
"text": " pTokens
must be a valid pointer to an array of tokenCount
valid VkIndirectCommandsLayoutTokenNVX
structures"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength",
"text": " tokenCount
must be greater than 0
"
}
]
},
"vkDestroyIndirectCommandsLayoutNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-01352",
"text": " All submitted commands that refer to indirectCommandsLayout
must have completed execution"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01353",
"text": " If VkAllocationCallbacks
were provided when objectTable
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01354",
"text": " If no VkAllocationCallbacks
were provided when objectTable
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter",
"text": " indirectCommandsLayout
must be a valid VkIndirectCommandsLayoutNVX
handle"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent",
"text": " indirectCommandsLayout
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdReserveSpaceForCommandsNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01329",
"text": " The provided commandBuffer
must not have had a prior space reservation since its creation or the last reset."
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01330",
"text": " The state of the commandBuffer
must be legal to execute all commands within the sequence provided by the indirectCommandsLayout
member of pProcessCommandsInfo
."
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter",
"text": " pReserveSpaceInfo
must be a valid pointer to a valid VkCmdReserveSpaceForCommandsInfoNVX
structure"
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel",
"text": " commandBuffer
must be a secondary VkCommandBuffer
"
}
]
},
"VkCmdReserveSpaceForCommandsInfoNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX
"
},
{
"vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter",
"text": " objectTable
must be a valid VkObjectTableNVX
handle"
},
{
"vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-indirectCommandsLayout-parameter",
"text": " indirectCommandsLayout
must be a valid VkIndirectCommandsLayoutNVX
handle"
},
{
"vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent",
"text": " Both of indirectCommandsLayout
, and objectTable
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdProcessCommandsNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter",
"text": " pProcessCommandsInfo
must be a valid pointer to a valid VkCmdProcessCommandsInfoNVX
structure"
},
{
"vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdProcessCommandsNVX-renderpass",
"text": " This command must only be called inside of a render pass instance"
}
]
},
"VkCmdProcessCommandsInfoNVX": {
"(VK_NVX_device_generated_commands)": [
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-01331",
"text": " The provided objectTable
must include all objects referenced by the generation process"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-01332",
"text": " indirectCommandsTokenCount
must match the indirectCommandsLayout
’s tokenCount
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-tokenType-01333",
"text": " The tokenType
member of each entry in the pIndirectCommandsTokens
array must match the values used at creation time of indirectCommandsLayout
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01334",
"text": " If targetCommandBuffer
is provided, it must have reserved command space"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01335",
"text": " If targetCommandBuffer
is provided, the objectTable
must match the reservation’s objectTable
and must have had all referenced objects registered at reservation time"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01336",
"text": " If targetCommandBuffer
is provided, the indirectCommandsLayout
must match the reservation’s indirectCommandsLayout
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01337",
"text": " If targetCommandBuffer
is provided, the maxSequencesCount
must not exceed the reservation’s maxSequencesCount
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338",
"text": " If sequencesCountBuffer
is used, its usage flag must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339",
"text": " If sequencesCountBuffer
is used, sequencesCountOffset
must be aligned to VkDeviceGeneratedCommandsLimitsNVX
::minSequenceCountBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340",
"text": " If sequencesIndexBuffer
is used, its usage flag must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341",
"text": " If sequencesIndexBuffer
is used, sequencesIndexOffset
must be aligned to VkDeviceGeneratedCommandsLimitsNVX
::minSequenceIndexBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter",
"text": " objectTable
must be a valid VkObjectTableNVX
handle"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsLayout-parameter",
"text": " indirectCommandsLayout
must be a valid VkIndirectCommandsLayoutNVX
handle"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter",
"text": " pIndirectCommandsTokens
must be a valid pointer to an array of indirectCommandsTokenCount
valid VkIndirectCommandsTokenNVX
structures"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-parameter",
"text": " If targetCommandBuffer
is not NULL
, targetCommandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-parameter",
"text": " If sequencesCountBuffer
is not VK_NULL_HANDLE, sequencesCountBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-parameter",
"text": " If sequencesIndexBuffer
is not VK_NULL_HANDLE, sequencesIndexBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength",
"text": " indirectCommandsTokenCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCmdProcessCommandsInfoNVX-commonparent",
"text": " Each of indirectCommandsLayout
, objectTable
, sequencesCountBuffer
, sequencesIndexBuffer
, and targetCommandBuffer
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkGetPhysicalDeviceSparseImageFormatProperties": {
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
"text": " samples
must be a bit value that is set in VkImageFormatProperties
::sampleCounts
returned by vkGetPhysicalDeviceImageFormatProperties
with format
, type
, tiling
, and usage
equal to those in this command and flags
equal to the value that is set in VkImageCreateInfo
::flags
when the image is created"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkSparseImageFormatProperties
structures"
}
]
},
"vkGetPhysicalDeviceSparseImageFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
"text": " pFormatInfo
must be a valid pointer to a valid VkPhysicalDeviceSparseImageFormatInfo2
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkSparseImageFormatProperties2
structures"
}
]
},
"VkPhysicalDeviceSparseImageFormatInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
"text": " samples
must be a bit value that is set in VkImageFormatProperties
::sampleCounts
returned by vkGetPhysicalDeviceImageFormatProperties
with format
, type
, tiling
, and usage
equal to those in this command and flags
equal to the value that is set in VkImageCreateInfo
::flags
when the image is created"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2
"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
}
]
},
"VkSparseImageFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2
"
},
{
"vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetImageSparseMemoryRequirements": {
"core": [
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
"text": " pSparseMemoryRequirementCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
"text": " If the value referenced by pSparseMemoryRequirementCount
is not 0
, and pSparseMemoryRequirements
is not NULL
, pSparseMemoryRequirements
must be a valid pointer to an array of pSparseMemoryRequirementCount
VkSparseImageMemoryRequirements
structures"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetImageSparseMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkImageSparseMemoryRequirementsInfo2
structure"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
"text": " pSparseMemoryRequirementCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
"text": " If the value referenced by pSparseMemoryRequirementCount
is not 0
, and pSparseMemoryRequirements
is not NULL
, pSparseMemoryRequirements
must be a valid pointer to an array of pSparseMemoryRequirementCount
VkSparseImageMemoryRequirements2
structures"
}
]
},
"VkImageSparseMemoryRequirementsInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
"
},
{
"vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
"text": " image
must be a valid VkImage
handle"
}
]
},
"VkSparseImageMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
"
},
{
"vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkSparseMemoryBind": {
"core": [
{
"vuid": "VUID-VkSparseMemoryBind-memory-01096",
"text": " If memory
is not VK_NULL_HANDLE, memory
and memoryOffset
must match the memory requirements of the resource, as described in section Resource Memory Association"
},
{
"vuid": "VUID-VkSparseMemoryBind-memory-01097",
"text": " If memory
is not VK_NULL_HANDLE, memory
must not have been created with a memory type that reports VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
bit set"
},
{
"vuid": "VUID-VkSparseMemoryBind-size-01098",
"text": " size
must be greater than 0
"
},
{
"vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
"text": " resourceOffset
must be less than the size of the resource"
},
{
"vuid": "VUID-VkSparseMemoryBind-size-01100",
"text": " size
must be less than or equal to the size of the resource minus resourceOffset
"
},
{
"vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkSparseMemoryBind-size-01102",
"text": " size
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-VkSparseMemoryBind-memory-parameter",
"text": " If memory
is not VK_NULL_HANDLE, memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-VkSparseMemoryBind-flags-parameter",
"text": " flags
must be a valid combination of VkSparseMemoryBindFlagBits values"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkSparseMemoryBind-memory-02730",
"text": " If memory
was created with VkExportMemoryAllocateInfo::handleTypes
not equal to 0
, at least one handle type it contained must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
or VkExternalMemoryImageCreateInfo::handleTypes
when the resource was created."
},
{
"vuid": "VUID-VkSparseMemoryBind-memory-02731",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
or VkExternalMemoryImageCreateInfo::handleTypes
when the resource was created."
}
]
},
"VkSparseBufferMemoryBindInfo": {
"core": [
{
"vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
"text": " pBinds
must be a valid pointer to an array of bindCount
valid VkSparseMemoryBind
structures"
},
{
"vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
"text": " bindCount
must be greater than 0
"
}
]
},
"VkSparseImageOpaqueMemoryBindInfo": {
"core": [
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
"text": " If the flags
member of any element of pBinds
contains VK_SPARSE_MEMORY_BIND_METADATA_BIT
, the binding range defined must be within the mip tail region of the metadata aspect of image
"
},
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
"text": " pBinds
must be a valid pointer to an array of bindCount
valid VkSparseMemoryBind
structures"
},
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
"text": " bindCount
must be greater than 0
"
}
]
},
"VkSparseImageMemoryBindInfo": {
"core": [
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
"text": " The subresource.mipLevel
member of each element of pBinds
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
"text": " The subresource.arrayLayer
member of each element of pBinds
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
"text": " image
must be a valid VkImage
handle"
},
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
"text": " pBinds
must be a valid pointer to an array of bindCount
valid VkSparseImageMemoryBind
structures"
},
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
"text": " bindCount
must be greater than 0
"
}
]
},
"VkSparseImageMemoryBind": {
"core": [
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
"text": " If the sparse aliased residency feature is not enabled, and if any other resources are bound to ranges of memory
, the range of memory
being bound must not overlap with those bound ranges"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
"text": " memory
and memoryOffset
must match the memory requirements of the calling command’s image
, as described in section Resource Memory Association"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
"text": " subresource
must be a valid image subresource for image
(see Image Views)"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
"text": " offset.x
must be a multiple of the sparse image block width (VkSparseImageFormatProperties
::imageGranularity.width
) of the image"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
"text": " extent.width
must either be a multiple of the sparse image block width of the image, or else (extent.width
+ offset.x
) must equal the width of the image subresource"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
"text": " offset.y
must be a multiple of the sparse image block height (VkSparseImageFormatProperties
::imageGranularity.height
) of the image"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
"text": " extent.height
must either be a multiple of the sparse image block height of the image, or else (extent.height
+ offset.y
) must equal the height of the image subresource"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
"text": " offset.z
must be a multiple of the sparse image block depth (VkSparseImageFormatProperties
::imageGranularity.depth
) of the image"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
"text": " extent.depth
must either be a multiple of the sparse image block depth of the image, or else (extent.depth
+ offset.z
) must equal the depth of the image subresource"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
"text": " subresource
must be a valid VkImageSubresource
structure"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
"text": " If memory
is not VK_NULL_HANDLE, memory
must be a valid VkDeviceMemory
handle"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
"text": " flags
must be a valid combination of VkSparseMemoryBindFlagBits values"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-02732",
"text": " If memory
was created with VkExportMemoryAllocateInfo::handleTypes
not equal to 0
, at least one handle type it contained must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when the image was created."
},
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-02733",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created."
}
]
},
"vkQueueBindSparse": {
"core": [
{
"vuid": "VUID-vkQueueBindSparse-fence-01113",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be unsignaled"
},
{
"vuid": "VUID-vkQueueBindSparse-fence-01114",
"text": " If fence
is not VK_NULL_HANDLE, fence
must not be associated with any other queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
"text": " Each element of the pSignalSemaphores
member of each element of pBindInfo
must be unsignaled when the semaphore signal operation it defines is executed on the device"
},
{
"vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
"text": " When a semaphore unsignal operation defined by any element of the pWaitSemaphores
member of any element of pBindInfo
executes on queue
, no other queue must be waiting on the same semaphore."
},
{
"vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
"text": " All elements of the pWaitSemaphores
member of all elements of pBindInfo
must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution."
},
{
"vuid": "VUID-vkQueueBindSparse-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
"text": " If bindInfoCount
is not 0
, pBindInfo
must be a valid pointer to an array of bindInfoCount
valid VkBindSparseInfo
structures"
},
{
"vuid": "VUID-vkQueueBindSparse-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-vkQueueBindSparse-queuetype",
"text": " The queue
must support sparse binding operations"
},
{
"vuid": "VUID-vkQueueBindSparse-commonparent",
"text": " Both of fence
, and queue
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkBindSparseInfo": {
"core": [
{
"vuid": "VUID-VkBindSparseInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
"
},
{
"vuid": "VUID-VkBindSparseInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDeviceGroupBindSparseInfo"
},
{
"vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
"text": " If waitSemaphoreCount
is not 0
, pWaitSemaphores
must be a valid pointer to an array of waitSemaphoreCount
valid VkSemaphore
handles"
},
{
"vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
"text": " If bufferBindCount
is not 0
, pBufferBinds
must be a valid pointer to an array of bufferBindCount
valid VkSparseBufferMemoryBindInfo
structures"
},
{
"vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
"text": " If imageOpaqueBindCount
is not 0
, pImageOpaqueBinds
must be a valid pointer to an array of imageOpaqueBindCount
valid VkSparseImageOpaqueMemoryBindInfo
structures"
},
{
"vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
"text": " If imageBindCount
is not 0
, pImageBinds
must be a valid pointer to an array of imageBindCount
valid VkSparseImageMemoryBindInfo
structures"
},
{
"vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
"text": " If signalSemaphoreCount
is not 0
, pSignalSemaphores
must be a valid pointer to an array of signalSemaphoreCount
valid VkSemaphore
handles"
},
{
"vuid": "VUID-VkBindSparseInfo-commonparent",
"text": " Both of the elements of pSignalSemaphores
, and the elements of pWaitSemaphores
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"VkDeviceGroupBindSparseInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
"text": " resourceDeviceIndex
and memoryDeviceIndex
must both be valid device indices."
},
{
"vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
"text": " Each memory allocation bound in this batch must have allocated an instance for memoryDeviceIndex
."
},
{
"vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
"
}
]
},
"vkCreateAndroidSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_android_surface)": [
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkAndroidSurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkAndroidSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_android_surface)": [
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
"text": " window
must point to a valid Android ANativeWindow."
},
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateWaylandSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkWaylandSurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkWaylandSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
"text": " display
must point to a valid Wayland wl_display
."
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
"text": " surface
must point to a valid Wayland wl_surface
."
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateWin32SurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkWin32SurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkWin32SurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
"text": " hinstance
must be a valid Win32 HINSTANCE
."
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
"text": " hwnd
must be a valid Win32 HWND
."
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateXcbSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkXcbSurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkXcbSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
"text": " connection
must point to a valid X11 xcb_connection_t
."
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
"text": " window
must be a valid X11 xcb_window_t
."
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateXlibSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkXlibSurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkXlibSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
"text": " dpy
must point to a valid Xlib Display
."
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
"text": " window
must be a valid Xlib Window
."
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateImagePipeSurfaceFUCHSIA": {
"(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkImagePipeSurfaceCreateInfoFUCHSIA
structure"
},
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkImagePipeSurfaceCreateInfoFUCHSIA": {
"(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000",
"text": " imagePipeHandle
must be a valid zx_handle_t
"
},
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateStreamDescriptorSurfaceGGP": {
"(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkStreamDescriptorSurfaceCreateInfoGGP
structure"
},
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkStreamDescriptorSurfaceCreateInfoGGP": {
"(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681",
"text": " streamDescriptor
must be a valid GgpStreamDescriptor
"
},
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
"
},
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateIOSSurfaceMVK": {
"(VK_KHR_surface)+(VK_MVK_ios_surface)": [
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkIOSSurfaceCreateInfoMVK
structure"
},
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkIOSSurfaceCreateInfoMVK": {
"(VK_KHR_surface)+(VK_MVK_ios_surface)": [
{
"vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
"text": " pView
must be a valid UIView
and must be backed by a CALayer
instance of type CAMetalLayer."
},
{
"vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK
"
},
{
"vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateMacOSSurfaceMVK": {
"(VK_KHR_surface)+(VK_MVK_macos_surface)": [
{
"vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkMacOSSurfaceCreateInfoMVK
structure"
},
{
"vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkMacOSSurfaceCreateInfoMVK": {
"(VK_KHR_surface)+(VK_MVK_macos_surface)": [
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
"text": " pView
must be a valid NSView
and must be backed by a CALayer
instance of type CAMetalLayer."
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
"
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateViSurfaceNN": {
"(VK_KHR_surface)+(VK_NN_vi_surface)": [
{
"vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkViSurfaceCreateInfoNN
structure"
},
{
"vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkViSurfaceCreateInfoNN": {
"(VK_KHR_surface)+(VK_NN_vi_surface)": [
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
"text": " window
must be a valid nn
::vi
::NativeWindowHandle
"
},
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
"
},
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateMetalSurfaceEXT": {
"(VK_KHR_surface)+(VK_EXT_metal_surface)": [
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkMetalSurfaceCreateInfoEXT
structure"
},
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkMetalSurfaceCreateInfoEXT": {
"(VK_KHR_surface)+(VK_EXT_metal_surface)": [
{
"vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkDestroySurfaceKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
"text": " All VkSwapchainKHR
objects created for surface
must have been destroyed prior to destroying surface
"
},
{
"vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
"text": " If VkAllocationCallbacks
were provided when surface
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
"text": " If no VkAllocationCallbacks
were provided when surface
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
"text": " If surface
is not VK_NULL_HANDLE, surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
"text": " If surface
is a valid handle, it must have been created, allocated, or retrieved from instance
"
}
]
},
"vkGetPhysicalDeviceDisplayPropertiesKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkDisplayPropertiesKHR
structures"
}
]
},
"vkGetPhysicalDeviceDisplayProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkDisplayProperties2KHR
structures"
}
]
},
"VkDisplayProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR
"
},
{
"vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkAcquireXlibDisplayEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
{
"vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
"text": " dpy
must be a valid pointer to a Display
value"
},
{
"vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
}
]
},
"vkGetRandROutputDisplayEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
{
"vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
"text": " dpy
must be a valid pointer to a Display
value"
},
{
"vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
"text": " pDisplay
must be a valid pointer to a VkDisplayKHR
handle"
}
]
},
"vkReleaseDisplayEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
{
"vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
}
]
},
"vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkDisplayPlanePropertiesKHR
structures"
}
]
},
"vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkDisplayPlaneProperties2KHR
structures"
}
]
},
"VkDisplayPlaneProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR
"
},
{
"vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetDisplayPlaneSupportedDisplaysKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
"text": " planeIndex
must be less than the number of display planes supported by the device as determined by calling vkGetPhysicalDeviceDisplayPlanePropertiesKHR
"
},
{
"vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
"text": " pDisplayCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
"text": " If the value referenced by pDisplayCount
is not 0
, and pDisplays
is not NULL
, pDisplays
must be a valid pointer to an array of pDisplayCount
VkDisplayKHR
handles"
}
]
},
"vkGetDisplayModePropertiesKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
},
{
"vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkDisplayModePropertiesKHR
structures"
}
]
},
"vkGetDisplayModeProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
},
{
"vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkDisplayModeProperties2KHR
structures"
}
]
},
"VkDisplayModeProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
"
},
{
"vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkDisplayModeParametersKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
"text": " The width
member of visibleRegion
must be greater than 0
"
},
{
"vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
"text": " The height
member of visibleRegion
must be greater than 0
"
},
{
"vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
"text": " refreshRate
must be greater than 0
"
}
]
},
"vkCreateDisplayModeKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDisplayModeCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
"text": " pMode
must be a valid pointer to a VkDisplayModeKHR
handle"
}
]
},
"VkDisplayModeCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
"text": " parameters
must be a valid VkDisplayModeParametersKHR
structure"
}
]
},
"vkGetDisplayPlaneCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
"text": " mode
must be a valid VkDisplayModeKHR
handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
"text": " pCapabilities
must be a valid pointer to a VkDisplayPlaneCapabilitiesKHR
structure"
}
]
},
"vkGetDisplayPlaneCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
"text": " pDisplayPlaneInfo
must be a valid pointer to a valid VkDisplayPlaneInfo2KHR
structure"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
"text": " pCapabilities
must be a valid pointer to a VkDisplayPlaneCapabilities2KHR
structure"
}
]
},
"VkDisplayPlaneInfo2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
"
},
{
"vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
"text": " mode
must be a valid VkDisplayModeKHR
handle"
}
]
},
"VkDisplayPlaneCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
"
},
{
"vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkDisplayPowerControlEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
{
"vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR
handle"
},
{
"vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
"text": " pDisplayPowerInfo
must be a valid pointer to a valid VkDisplayPowerInfoEXT
structure"
}
]
},
"VkDisplayPowerInfoEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
{
"vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT
"
},
{
"vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
"text": " powerState
must be a valid VkDisplayPowerStateEXT value"
}
]
},
"vkCreateDisplayPlaneSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDisplaySurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkDisplaySurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
"text": " planeIndex
must be less than the number of display planes supported by the device as determined by calling vkGetPhysicalDeviceDisplayPlanePropertiesKHR
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
"text": " If the planeReorderPossible
member of the VkDisplayPropertiesKHR
structure returned by vkGetPhysicalDeviceDisplayPropertiesKHR
for the display corresponding to displayMode
is VK_TRUE
then planeStackIndex
must be less than the number of display planes supported by the device as determined by calling vkGetPhysicalDeviceDisplayPlanePropertiesKHR
; otherwise planeStackIndex
must equal the currentStackIndex
member of VkDisplayPlanePropertiesKHR
returned by vkGetPhysicalDeviceDisplayPlanePropertiesKHR
for the display plane corresponding to displayMode
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
"text": " If alphaMode
is VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR
then globalAlpha
must be between 0
and 1
, inclusive"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
"text": " alphaMode
must be 0
or one of the bits present in the supportedAlpha
member of VkDisplayPlaneCapabilitiesKHR
returned by vkGetDisplayPlaneCapabilitiesKHR
for the display plane corresponding to displayMode
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
"text": " The width
and height
members of imageExtent
must be less than the maxImageDimensions2D
member of VkPhysicalDeviceLimits
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
"text": " displayMode
must be a valid VkDisplayModeKHR
handle"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
"text": " transform
must be a valid VkSurfaceTransformFlagBitsKHR value"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
"text": " alphaMode
must be a valid VkDisplayPlaneAlphaFlagBitsKHR value"
}
]
},
"vkCreateHeadlessSurfaceEXT": {
"(VK_KHR_surface)+(VK_EXT_headless_surface)": [
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkHeadlessSurfaceCreateInfoEXT
structure"
},
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkHeadlessSurfaceCreateInfoEXT": {
"(VK_KHR_surface)+(VK_EXT_headless_surface)": [
{
"vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkGetPhysicalDeviceSurfaceSupportKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
"text": " pSupported
must be a valid pointer to a VkBool32
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
"text": " display
must be a valid pointer to a wl_display
value"
}
]
},
"vkGetPhysicalDeviceWin32PresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
}
]
},
"vkGetPhysicalDeviceXcbPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
"text": " connection
must be a valid pointer to an xcb_connection_t
value"
}
]
},
"vkGetPhysicalDeviceXlibPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
"text": " dpy
must be a valid pointer to a Display
value"
}
]
},
"vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
"text": " pSurfaceCapabilities
must be a valid pointer to a VkSurfaceCapabilitiesKHR
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive,VK_KHR_win32_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671",
"text": " If an instance of VkSurfaceCapabilitiesFullScreenExclusiveEXT is included in the pNext
chain of pSurfaceCapabilities
, an instance of VkSurfaceFullScreenExclusiveWin32InfoEXT must be included in the pNext
chain of pSurfaceInfo
."
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
"text": " pSurfaceCapabilities
must be a valid pointer to a VkSurfaceCapabilities2KHR
structure"
}
]
},
"VkPhysicalDeviceSurfaceInfo2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface,VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672",
"text": " If the pNext
chain includes an instance of VkSurfaceFullScreenExclusiveInfoEXT with its fullScreenExclusive
member set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
, and surface
was created using vkCreateWin32SurfaceKHR, an instance of VkSurfaceFullScreenExclusiveWin32InfoEXT must be present in the pNext
chain"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkSurfaceFullScreenExclusiveInfoEXT or VkSurfaceFullScreenExclusiveWin32InfoEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
}
]
},
"VkSurfaceFullScreenExclusiveInfoEXT": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
"
},
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter",
"text": " fullScreenExclusive
must be a valid VkFullScreenExclusiveEXT value"
}
]
},
"VkSurfaceFullScreenExclusiveWin32InfoEXT": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673",
"text": " hmonitor
must be a valid HMONITOR
"
},
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
"
}
]
},
"VkSurfaceCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
"
},
{
"vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDisplayNativeHdrSurfaceCapabilitiesAMD, VkSharedPresentSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesFullScreenExclusiveEXT, or VkSurfaceProtectedCapabilitiesKHR"
},
{
"vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
}
]
},
"VkSurfaceProtectedCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_surface_protected_capabilities)": [
{
"vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
"
}
]
},
"VkSharedPresentSurfaceCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
"
}
]
},
"VkDisplayNativeHdrSurfaceCapabilitiesAMD": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_AMD_display_native_hdr)": [
{
"vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
"
}
]
},
"VkSurfaceCapabilitiesFullScreenExclusiveEXT": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
"
}
]
},
"vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
"(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
"text": " pSurfaceCapabilities
must be a valid pointer to a VkSurfaceCapabilities2EXT
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"VkSurfaceCapabilities2EXT": {
"(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
{
"vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
"text": " supportedSurfaceCounters
must not include VK_SURFACE_COUNTER_VBLANK_EXT
unless the surface queried is a display surface."
},
{
"vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
"
},
{
"vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceSurfaceFormatsKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739",
"text": " surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism."
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
"text": " pSurfaceFormatCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
"text": " If the value referenced by pSurfaceFormatCount
is not 0
, and pSurfaceFormats
is not NULL
, pSurfaceFormats
must be a valid pointer to an array of pSurfaceFormatCount
VkSurfaceFormatKHR
structures"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetPhysicalDeviceSurfaceFormats2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740",
"text": " pSurfaceInfo
::surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism."
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
"text": " pSurfaceFormatCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
"text": " If the value referenced by pSurfaceFormatCount
is not 0
, and pSurfaceFormats
is not NULL
, pSurfaceFormats
must be a valid pointer to an array of pSurfaceFormatCount
VkSurfaceFormat2KHR
structures"
}
]
},
"VkSurfaceFormat2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR
"
},
{
"vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceSurfacePresentModesKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
"text": " pPresentModeCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
"text": " If the value referenced by pPresentModeCount
is not 0
, and pPresentModes
is not NULL
, pPresentModes
must be a valid pointer to an array of pPresentModeCount
VkPresentModeKHR values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetPhysicalDeviceSurfacePresentModes2EXT": {
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter",
"text": " pPresentModeCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter",
"text": " If the value referenced by pPresentModeCount
is not 0
, and pPresentModes
is not NULL
, pPresentModes
must be a valid pointer to an array of pPresentModeCount
VkPresentModeKHR values"
}
]
},
"vkAcquireFullScreenExclusiveModeEXT": {
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675",
"text": " swapchain
must be a swapchain created with an instance of VkSurfaceFullScreenExclusiveInfoEXT, with fullScreenExclusive
set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676",
"text": " swapchain
must not currently have exclusive full-screen access"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkReleaseFullScreenExclusiveModeEXT": {
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678",
"text": " swapchain
must be a swapchain created with an instance of VkSurfaceFullScreenExclusiveInfoEXT, with fullScreenExclusive
set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
"
}
]
},
"vkGetDeviceGroupPresentCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
"text": " pDeviceGroupPresentCapabilities
must be a valid pointer to a VkDeviceGroupPresentCapabilitiesKHR
structure"
}
]
},
"VkDeviceGroupPresentCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
"
},
{
"vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetDeviceGroupSurfacePresentModesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
"text": " pModes
must be a valid pointer to a VkDeviceGroupPresentModeFlagsKHR value"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
"text": " Both of device
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetDeviceGroupSurfacePresentModes2EXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR
structure"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter",
"text": " pModes
must be a valid pointer to a VkDeviceGroupPresentModeFlagsKHR value"
}
]
},
"vkGetPhysicalDevicePresentRectanglesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
"text": " pRectCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
"text": " If the value referenced by pRectCount
is not 0
, and pRects
is not NULL
, pRects
must be a valid pointer to an array of pRectCount
VkRect2D
structures"
},
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetRefreshCycleDurationGOOGLE": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
{
"vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
"text": " pDisplayTimingProperties
must be a valid pointer to a VkRefreshCycleDurationGOOGLE
structure"
},
{
"vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetPastPresentationTimingGOOGLE": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
{
"vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
"text": " pPresentationTimingCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
"text": " If the value referenced by pPresentationTimingCount
is not 0
, and pPresentationTimings
is not NULL
, pPresentationTimings
must be a valid pointer to an array of pPresentationTimingCount
VkPastPresentationTimingGOOGLE
structures"
},
{
"vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkGetSwapchainStatusKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkCreateSwapchainKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkSwapchainCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
"text": " pSwapchain
must be a valid pointer to a VkSwapchainKHR
handle"
}
]
},
"VkSwapchainCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
"text": " surface
must be a surface that is supported by the device as determined using vkGetPhysicalDeviceSurfaceSupportKHR"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
"text": " minImageCount
must be greater than or equal to the value returned in the minImageCount
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
"text": " minImageCount
must be less than or equal to the value returned in the maxImageCount
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface if the returned maxImageCount
is not zero"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
"text": " imageFormat
and imageColorSpace
must match the format
and colorSpace
members, respectively, of one of the VkSurfaceFormatKHR
structures returned by vkGetPhysicalDeviceSurfaceFormatsKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
"text": " imageExtent
must be between minImageExtent
and maxImageExtent
, inclusive, where minImageExtent
and maxImageExtent
are members of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
"text": " imageExtent
members width
and height
must both be non-zero"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
"text": " imageArrayLayers
must be greater than 0
and less than or equal to the maxImageArrayLayers
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, queueFamilyIndexCount
must be greater than 1
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
"text": " preTransform
must be one of the bits present in the supportedTransforms
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
"text": " compositeAlpha
must be one of the bits present in the supportedCompositeAlpha
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
"text": " presentMode
must be one of the VkPresentModeKHR values returned by vkGetPhysicalDeviceSurfacePresentModesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
"text": " If oldSwapchain
is not VK_NULL_HANDLE, oldSwapchain
must be a non-retired swapchain associated with native window referred to by surface
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
"text": " The implied image creation parameters of the swapchain must be supported as reported by vkGetPhysicalDeviceImageFormatProperties"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupSwapchainCreateInfoKHR, VkImageFormatListCreateInfoKHR, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, or VkSwapchainDisplayNativeHdrCreateInfoAMD"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkSwapchainCreateFlagBitsKHR values"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
"text": " imageFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
"text": " imageColorSpace
must be a valid VkColorSpaceKHR value"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
"text": " imageUsage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
"text": " imageUsage
must not be 0
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
"text": " imageSharingMode
must be a valid VkSharingMode value"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
"text": " preTransform
must be a valid VkSurfaceTransformFlagBitsKHR value"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
"text": " compositeAlpha
must be a valid VkCompositeAlphaFlagBitsKHR value"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
"text": " presentMode
must be a valid VkPresentModeKHR value"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
"text": " If oldSwapchain
is not VK_NULL_HANDLE, oldSwapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
"text": " If oldSwapchain
is a valid handle, it must have been created, allocated, or retrieved from surface
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
"text": " Both of oldSwapchain
, and surface
that are valid handles must have been created, allocated, or retrieved from the same VkInstance
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
"text": " minImageCount
must be 1
if presentMode
is either VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
or VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
"text": " If presentMode
is VK_PRESENT_MODE_IMMEDIATE_KHR
, VK_PRESENT_MODE_MAILBOX_KHR
, VK_PRESENT_MODE_FIFO_KHR
or VK_PRESENT_MODE_FIFO_RELAXED_KHR
, imageUsage
must be a subset of the supported usage flags present in the supportedUsageFlags
member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for surface
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
"text": " If presentMode
is VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
or VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
, imageUsage
must be a subset of the supported usage flags present in the sharedPresentSupportedUsageFlags
member of the VkSharedPresentSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilities2KHR for surface
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
"text": " imageUsage
must be a subset of the supported usage flags present in the supportedUsageFlags
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties for the physicalDevice
that was used to create device
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
"text": " If the logical device was created with VkDeviceGroupDeviceCreateInfo::physicalDeviceCount
equal to 1, flags
must not contain VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
"text": " If flags
contains VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
then the pNext
chain must contain an instance of VkImageFormatListCreateInfoKHR with a viewFormatCount
greater than zero and pViewFormats
must have an element equal to imageFormat
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_surface_protected_capabilities)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187",
"text": " If flags
contains VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
, then VkSurfaceProtectedCapabilitiesKHR
::supportsProtected
must be VK_TRUE
in the VkSurfaceProtectedCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilities2KHR for surface
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_full_screen_exclusive,VK_KHR_win32_surface)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679",
"text": " If the pNext
chain includes an instance of VkSurfaceFullScreenExclusiveInfoEXT with its fullScreenExclusive
member set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
, and surface
was created using vkCreateWin32SurfaceKHR, an instance of VkSurfaceFullScreenExclusiveWin32InfoEXT must be present in the pNext
chain"
}
]
},
"VkDeviceGroupSwapchainCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
"text": " modes
must be a valid combination of VkDeviceGroupPresentModeFlagBitsKHR values"
},
{
"vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
"text": " modes
must not be 0
"
}
]
},
"VkSwapchainDisplayNativeHdrCreateInfoAMD": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
{
"vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
"
},
{
"vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-XXXXX",
"text": " It is only valid to set localDimmingEnable
to VK_TRUE
if VkDisplayNativeHdrSurfaceCapabilitiesAMD::localDimmingSupport
is supported."
}
]
},
"vkSetLocalDimmingAMD": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
{
"vuid": "VUID-vkSetLocalDimmingAMD-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter",
"text": " swapChain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkSetLocalDimmingAMD-commonparent",
"text": " Both of device
, and swapChain
must have been created, allocated, or retrieved from the same VkInstance
"
},
{
"vuid": "VUID-vkSetLocalDimmingAMD-XXXXX",
"text": " It is only valid to call vkSetLocalDimmingAMD if VkDisplayNativeHdrSurfaceCapabilitiesAMD::localDimmingSupport
is supported."
}
]
},
"VkSwapchainCounterCreateInfoEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
{
"vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
"text": " The bits in surfaceCounters
must be supported by VkSwapchainCreateInfoKHR::surface
, as reported by vkGetPhysicalDeviceSurfaceCapabilities2EXT."
},
{
"vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
"text": " surfaceCounters
must be a valid combination of VkSurfaceCounterFlagBitsEXT values"
}
]
},
"vkGetSwapchainCounterEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
{
"vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
"text": " One or more present commands on swapchain
must have been processed by the presentation engine."
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
"text": " counter
must be a valid VkSurfaceCounterFlagBitsEXT value"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
"text": " pCounterValue
must be a valid pointer to a uint64_t
value"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkDestroySwapchainKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
"text": " All uses of presentable images acquired from swapchain
must have completed execution"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
"text": " If VkAllocationCallbacks
were provided when swapchain
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
"text": " If no VkAllocationCallbacks
were provided when swapchain
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
"text": " If swapchain
is not VK_NULL_HANDLE, swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-commonparent",
"text": " Both of device
, and swapchain
that are valid handles must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkCreateSharedSwapchainsKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
{
"vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of swapchainCount
valid VkSwapchainCreateInfoKHR
structures"
},
{
"vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
"text": " pSwapchains
must be a valid pointer to an array of swapchainCount
VkSwapchainKHR
handles"
},
{
"vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
}
]
},
"vkGetSwapchainImagesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
"text": " pSwapchainImageCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
"text": " If the value referenced by pSwapchainImageCount
is not 0
, and pSwapchainImages
is not NULL
, pSwapchainImages
must be a valid pointer to an array of pSwapchainImageCount
VkImage
handles"
},
{
"vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkAcquireNextImageKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
"text": " If semaphore
is not VK_NULL_HANDLE it must be unsignaled"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
"text": " If semaphore
is not VK_NULL_HANDLE it must not have any uncompleted signal or wait operations pending"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
"text": " If fence
is not VK_NULL_HANDLE it must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
"text": " semaphore
and fence
must not both be equal to VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
"text": " If the number of currently acquired images is greater than the difference between the number of images in swapchain
and the value of VkSurfaceCapabilitiesKHR::minImageCount
as returned by a call to vkGetPhysicalDeviceSurfaceCapabilities2KHR with the surface
used to create swapchain
, timeout
must not be UINT64_MAX
"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
"text": " If semaphore
is not VK_NULL_HANDLE, semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
"text": " pImageIndex
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
"text": " If semaphore
is a valid handle, it must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
"text": " If fence
is a valid handle, it must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkAcquireNextImageKHR-commonparent",
"text": " Both of device
, and swapchain
that are valid handles must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkAcquireNextImage2KHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
"text": " If the number of currently acquired images is greater than the difference between the number of images in the swapchain
member of pAcquireInfo
and the value of VkSurfaceCapabilitiesKHR::minImageCount
as returned by a call to vkGetPhysicalDeviceSurfaceCapabilities2KHR with the surface
used to create swapchain
, the timeout
member of pAcquireInfo
must not be UINT64_MAX
"
},
{
"vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
"text": " pAcquireInfo
must be a valid pointer to a valid VkAcquireNextImageInfoKHR
structure"
},
{
"vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
"text": " pImageIndex
must be a valid pointer to a uint32_t
value"
}
]
},
"VkAcquireNextImageInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
"text": " If semaphore
is not VK_NULL_HANDLE it must be unsignaled"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
"text": " If semaphore
is not VK_NULL_HANDLE it must not have any uncompleted signal or wait operations pending"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
"text": " If fence
is not VK_NULL_HANDLE it must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
"text": " semaphore
and fence
must not both be equal to VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
"text": " deviceMask
must be a valid device mask"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR
handle"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
"text": " If semaphore
is not VK_NULL_HANDLE, semaphore
must be a valid VkSemaphore
handle"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence
handle"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
"text": " Each of fence
, semaphore
, and swapchain
that are valid handles must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"vkQueuePresentKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
"text": " Each element of pSwapchains
member of pPresentInfo
must be a swapchain that is created for a surface for which presentation is supported from queue
as determined using a call to vkGetPhysicalDeviceSurfaceSupportKHR
"
},
{
"vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
"text": " When a semaphore unsignal operation defined by the elements of the pWaitSemaphores
member of pPresentInfo
executes on queue
, no other queue must be waiting on the same semaphore."
},
{
"vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
"text": " All elements of the pWaitSemaphores
member of pPresentInfo
must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution."
},
{
"vuid": "VUID-vkQueuePresentKHR-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
"text": " pPresentInfo
must be a valid pointer to a valid VkPresentInfoKHR
structure"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
{
"vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
"text": " If more than one member of pSwapchains
was created from a display surface, all display surfaces referenced that refer to the same display must use the same display mode"
}
]
},
"VkPresentInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
"text": " Each element of pImageIndices
must be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pSwapchains
array, and the presented image subresource must be in the VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
layout at the time the operation is executed on a VkDevice
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
"text": " Each element of pImageIndices
must be the index of a presentable image acquired from the swapchain specified by the corresponding element of the pSwapchains
array, and the presented image subresource must be in the VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
layout at the time the operation is executed on a VkDevice
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkPresentInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
"
},
{
"vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupPresentInfoKHR, VkDisplayPresentInfoKHR, VkPresentFrameTokenGGP, VkPresentRegionsKHR, or VkPresentTimesInfoGOOGLE"
},
{
"vuid": "VUID-VkPresentInfoKHR-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
"text": " If waitSemaphoreCount
is not 0
, pWaitSemaphores
must be a valid pointer to an array of waitSemaphoreCount
valid VkSemaphore
handles"
},
{
"vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
"text": " pSwapchains
must be a valid pointer to an array of swapchainCount
valid VkSwapchainKHR
handles"
},
{
"vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
"text": " pImageIndices
must be a valid pointer to an array of swapchainCount
uint32_t
values"
},
{
"vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
"text": " If pResults
is not NULL
, pResults
must be a valid pointer to an array of swapchainCount
VkResult values"
},
{
"vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
},
{
"vuid": "VUID-VkPresentInfoKHR-commonparent",
"text": " Both of the elements of pSwapchains
, and the elements of pWaitSemaphores
that are valid handles must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"VkPresentRegionsKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
{
"vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
"text": " swapchainCount
must be the same value as VkPresentInfoKHR
::swapchainCount
, where VkPresentInfoKHR
is in the pNext
chain of this VkPresentRegionsKHR
structure"
},
{
"vuid": "VUID-VkPresentRegionsKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR
"
},
{
"vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
"text": " If pRegions
is not NULL
, pRegions
must be a valid pointer to an array of swapchainCount
valid VkPresentRegionKHR
structures"
},
{
"vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
}
]
},
"VkPresentRegionKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
{
"vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
"text": " If rectangleCount
is not 0
, and pRectangles
is not NULL
, pRectangles
must be a valid pointer to an array of rectangleCount
valid VkRectLayerKHR
structures"
}
]
},
"VkRectLayerKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
{
"vuid": "VUID-VkRectLayerKHR-offset-01261",
"text": " The sum of offset
and extent
must be no greater than the imageExtent
member of the VkSwapchainCreateInfoKHR
structure given to vkCreateSwapchainKHR."
},
{
"vuid": "VUID-VkRectLayerKHR-layer-01262",
"text": " layer
must be less than imageArrayLayers
member of the VkSwapchainCreateInfoKHR
structure given to vkCreateSwapchainKHR."
}
]
},
"VkDisplayPresentInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
{
"vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
"text": " srcRect
must specify a rectangular region that is a subset of the image being presented"
},
{
"vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
"text": " dstRect
must specify a rectangular region that is a subset of the visibleRegion
parameter of the display mode the swapchain being presented uses"
},
{
"vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
"text": " If the persistentContent
member of the VkDisplayPropertiesKHR
structure returned by vkGetPhysicalDeviceDisplayPropertiesKHR
for the display the present operation targets then persistent
must be VK_FALSE
"
},
{
"vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR
"
}
]
},
"VkDeviceGroupPresentInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
"text": " swapchainCount
must equal 0
or VkPresentInfoKHR::swapchainCount
"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
"text": " If mode
is VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR
, then each element of pDeviceMasks
must have exactly one bit set, and the corresponding element of VkDeviceGroupPresentCapabilitiesKHR::presentMask
must be non-zero"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
"text": " If mode
is VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR
, then each element of pDeviceMasks
must have exactly one bit set, and some physical device in the logical device must include that bit in its VkDeviceGroupPresentCapabilitiesKHR::presentMask
."
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
"text": " If mode
is VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR
, then each element of pDeviceMasks
must have a value for which all set bits are set in one of the elements of VkDeviceGroupPresentCapabilitiesKHR::presentMask
"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
"text": " If mode
is VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR
, then for each bit set in each element of pDeviceMasks
, the corresponding element of VkDeviceGroupPresentCapabilitiesKHR::presentMask
must be non-zero"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
"text": " The value of each element of pDeviceMasks
must be equal to the device mask passed in VkAcquireNextImageInfoKHR::deviceMask
when the image index was last acquired"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
"text": " mode
must have exactly one bit set, and that bit must have been included in VkDeviceGroupSwapchainCreateInfoKHR::modes
"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR
"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
"text": " If swapchainCount
is not 0
, pDeviceMasks
must be a valid pointer to an array of swapchainCount
uint32_t
values"
},
{
"vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
"text": " mode
must be a valid VkDeviceGroupPresentModeFlagBitsKHR value"
}
]
},
"VkPresentTimesInfoGOOGLE": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
{
"vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
"text": " swapchainCount
must be the same value as VkPresentInfoKHR
::swapchainCount
, where VkPresentInfoKHR
is in the pNext
chain of this VkPresentTimesInfoGOOGLE
structure."
},
{
"vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE
"
},
{
"vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
"text": " If pTimes
is not NULL
, pTimes
must be a valid pointer to an array of swapchainCount
VkPresentTimeGOOGLE
structures"
},
{
"vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
}
]
},
"VkPresentFrameTokenGGP": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GGP_frame_token)": [
{
"vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680",
"text": " frameToken
must be a valid GgpFrameToken
"
},
{
"vuid": "VUID-VkPresentFrameTokenGGP-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
"
}
]
},
"vkSetHdrMetadataEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
{
"vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
"text": " pSwapchains
must be a valid pointer to an array of swapchainCount
valid VkSwapchainKHR
handles"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
"text": " pMetadata
must be a valid pointer to an array of swapchainCount
valid VkHdrMetadataEXT
structures"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
"text": " Both of device
, and the elements of pSwapchains
must have been created, allocated, or retrieved from the same VkInstance
"
}
]
},
"VkHdrMetadataEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
{
"vuid": "VUID-VkHdrMetadataEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_HDR_METADATA_EXT
"
},
{
"vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdTraceRaysNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02690",
"text": " If a VkImageView
is sampled with VK_FILTER_LINEAR
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set for commandBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02705",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02706",
"text": " If the robust buffer access feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
"text": " raygenShaderBindingOffset
must be less than the size of raygenShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
"text": " raygenShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
"text": " missShaderBindingOffset
must be less than the size of missShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
"text": " missShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
"text": " hitShaderBindingOffset
must be less than the size of hitShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
"text": " hitShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
"text": " callableShaderBindingOffset
must be less than the size of callableShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
"text": " callableShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
"text": " missShaderBindingStride
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
"text": " hitShaderBindingStride
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
"text": " callableShaderBindingStride
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
"text": " missShaderBindingStride
must be a less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
"text": " hitShaderBindingStride
must be a less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
"text": " callableShaderBindingStride
must be a less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-width-02469",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-height-02470",
"text": " height
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
"text": " depth
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
"text": " raygenShaderBindingTableBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
"text": " If missShaderBindingTableBuffer
is not VK_NULL_HANDLE, missShaderBindingTableBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
"text": " If hitShaderBindingTableBuffer
is not VK_NULL_HANDLE, hitShaderBindingTableBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
"text": " If callableShaderBindingTableBuffer
is not VK_NULL_HANDLE, callableShaderBindingTableBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commonparent",
"text": " Each of callableShaderBindingTableBuffer
, commandBuffer
, hitShaderBindingTableBuffer
, missShaderBindingTableBuffer
, and raygenShaderBindingTableBuffer
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT
or VK_SAMPLER_REDUCTION_MODE_MAX_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_ray_tracing)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
."
}
],
"(VK_NV_ray_tracing)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer, any resource accessed by the VkPipeline
object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point must not write to any resource"
}
]
},
"vkCmdBuildAccelerationStructureNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
"text": " geometryCount
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxGeometryCount
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
"text": " dst
must have been created with compatible VkAccelerationStructureInfoNV where VkAccelerationStructureInfoNV::type
and VkAccelerationStructureInfoNV::flags
are identical, VkAccelerationStructureInfoNV::instanceCount
and VkAccelerationStructureInfoNV::geometryCount
for dst
are greater than or equal to the build size and each geometry in VkAccelerationStructureInfoNV::pGeometries
for dst
has greater than or equal to the number of vertices, indices, and AABBs."
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
"text": " If update
is VK_TRUE
, src
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
"text": " If update
is VK_TRUE
, src
must have been built before with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV
set in VkAccelerationStructureInfoNV::flags
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
"text": " If update
is VK_FALSE
, The size
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with VkAccelerationStructureMemoryRequirementsInfoNV::accelerationStructure
set to dst
and VkAccelerationStructureMemoryRequirementsInfoNV::type
set to VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
must be less than or equal to the size of scratch
minus scratchOffset
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
"text": " If update
is VK_TRUE
, The size
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with VkAccelerationStructureMemoryRequirementsInfoNV::accelerationStructure
set to dst
and VkAccelerationStructureMemoryRequirementsInfoNV::type
set to VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
must be less than or equal to the size of scratch
minus scratchOffset
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkAccelerationStructureInfoNV
structure"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
"text": " If instanceData
is not VK_NULL_HANDLE, instanceData
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
"text": " dst
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
"text": " If src
is not VK_NULL_HANDLE, src
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
"text": " scratch
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
"text": " Each of commandBuffer
, dst
, instanceData
, scratch
, and src
that are valid handles must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdWriteAccelerationStructuresPropertiesNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-02242",
"text": " queryType
must be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02493",
"text": " queryPool
must have been created with a queryType
matching queryType
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02494",
"text": " The queries identified by queryPool
and firstQuery
must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-02495",
"text": " All acceleration structures in accelerationStructures
must have been built with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV
if queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid VkAccelerationStructureNV
handles"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool
handle"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
"text": " Each of commandBuffer
, queryPool
, and the elements of pAccelerationStructures
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkCmdCopyAccelerationStructureNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-02496",
"text": " mode
must be VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
or VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV
"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-02497",
"text": " src
must have been built with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV
if mode
is VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV
"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
"text": " dst
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
"text": " src
must be a valid VkAccelerationStructureNV
handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
"text": " mode
must be a valid VkCopyAccelerationStructureModeNV value"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
"text": " Each of commandBuffer
, dst
, and src
must have been created, allocated, or retrieved from the same VkDevice
"
}
]
},
"vkEnumerateInstanceLayerProperties": {
"core": [
{
"vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkLayerProperties
structures"
}
]
},
"vkEnumerateDeviceLayerProperties": {
"core": [
{
"vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkLayerProperties
structures"
}
]
},
"vkEnumerateInstanceExtensionProperties": {
"core": [
{
"vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
"text": " If pLayerName
is not NULL
, pLayerName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkExtensionProperties
structures"
}
]
},
"vkEnumerateDeviceExtensionProperties": {
"core": [
{
"vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
"text": " If pLayerName
is not NULL
, pLayerName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkExtensionProperties
structures"
}
]
},
"vkGetPhysicalDeviceFeatures": {
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
"text": " pFeatures
must be a valid pointer to a VkPhysicalDeviceFeatures
structure"
}
]
},
"vkGetPhysicalDeviceFeatures2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
"text": " pFeatures
must be a valid pointer to a VkPhysicalDeviceFeatures2
structure"
}
]
},
"VkPhysicalDeviceFeatures2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
"
}
]
},
"VkPhysicalDeviceVariablePointersFeatures": {
"(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
{
"vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431",
"text": " If variablePointers
is enabled then variablePointersStorageBuffer
must also be enabled."
},
{
"vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
"
}
]
},
"VkPhysicalDeviceMultiviewFeatures": {
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
"text": " If multiviewGeometryShader
is enabled then multiview
must also be enabled."
},
{
"vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
"text": " If multiviewTessellationShader
is enabled then multiview
must also be enabled."
},
{
"vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderAtomicInt64FeaturesKHR": {
"(VK_KHR_shader_atomic_int64)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64FeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR
"
}
]
},
"VkPhysicalDevice8BitStorageFeaturesKHR": {
"(VK_KHR_8bit_storage)": [
{
"vuid": "VUID-VkPhysicalDevice8BitStorageFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR
"
}
]
},
"VkPhysicalDevice16BitStorageFeatures": {
"(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
{
"vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES
"
}
]
},
"VkPhysicalDeviceFloat16Int8FeaturesKHR": {
"(VK_KHR_shader_float16_int8)": [
{
"vuid": "VUID-VkPhysicalDeviceFloat16Int8FeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
"
}
]
},
"VkPhysicalDeviceProtectedMemoryFeatures": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
"
}
]
},
"VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderDrawParametersFeatures": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
"
}
]
},
"VkPhysicalDeviceMeshShaderFeaturesNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceDescriptorIndexingFeaturesEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceASTCDecodeFeaturesEXT": {
"(VK_EXT_astc_decode_mode)": [
{
"vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceVulkanMemoryModelFeaturesKHR": {
"(VK_KHR_vulkan_memory_model)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceInlineUniformBlockFeaturesEXT": {
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
"(VK_NV_representative_fragment_test)": [
{
"vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceExclusiveScissorFeaturesNV": {
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceCornerSampledImageFeaturesNV": {
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
"(VK_NV_compute_shader_derivatives)": [
{
"vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": {
"(VK_NV_fragment_shader_barycentric)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
"(VK_NV_shader_image_footprint)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceShadingRateImageFeaturesNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceScalarBlockLayoutFeaturesEXT": {
"(VK_EXT_scalar_block_layout)": [
{
"vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR": {
"(VK_KHR_uniform_buffer_standard_layout)": [
{
"vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
"(VK_EXT_depth_clip_enable)": [
{
"vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
"(VK_EXT_memory_priority)": [
{
"vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": {
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
"(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": {
"(VK_EXT_fragment_shader_interlock)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
"(VK_EXT_ycbcr_image_arrays)": [
{
"vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceHostQueryResetFeaturesEXT": {
"(VK_EXT_host_query_reset)": [
{
"vuid": "VUID-VkPhysicalDeviceHostQueryResetFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderIntegerFunctions2INTEL": {
"(VK_INTEL_shader_integer_functions2)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2INTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL
"
}
]
},
"VkPhysicalDeviceCoverageReductionModeFeaturesNV": {
"(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT": {
"(VK_EXT_shader_demote_to_helper_invocation)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
"(VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePushDescriptorPropertiesKHR": {
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceMultiviewProperties": {
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES
"
}
]
},
"VkPhysicalDeviceFloatControlsPropertiesKHR": {
"(VK_KHR_shader_float_controls)": [
{
"vuid": "VUID-VkPhysicalDeviceFloatControlsPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
"(VK_EXT_discard_rectangles)": [
{
"vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceSampleLocationsPropertiesEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
"(VK_NVX_multiview_per_view_attributes)": [
{
"vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX
"
}
]
},
"VkPhysicalDevicePointClippingProperties": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES
"
}
]
},
"VkPhysicalDeviceSubgroupProperties": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES
"
}
]
},
"VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT": {
"(VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceProtectedMemoryProperties": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES
"
}
]
},
"VkPhysicalDeviceMaintenance3Properties": {
"(VK_VERSION_1_1,VK_KHR_maintenance3)": [
{
"vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES
"
}
]
},
"VkPhysicalDeviceMeshShaderPropertiesNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceDescriptorIndexingPropertiesEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceInlineUniformBlockPropertiesEXT": {
"(VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
"(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceShaderCorePropertiesAMD": {
"(VK_AMD_shader_core_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
"
}
]
},
"VkPhysicalDeviceDepthStencilResolvePropertiesKHR": {
"(VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkPhysicalDeviceDepthStencilResolvePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceShadingRateImagePropertiesNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceRayTracingPropertiesNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT": {
"(VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT
"
}
]
},
"vkGetPhysicalDeviceMultisamplePropertiesEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
"text": " pMultisampleProperties
must be a valid pointer to a VkMultisamplePropertiesEXT
structure"
}
]
},
"VkMultisamplePropertiesEXT": {
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceFormatProperties": {
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
"text": " pFormatProperties
must be a valid pointer to a VkFormatProperties
structure"
}
]
},
"vkGetPhysicalDeviceFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
"text": " pFormatProperties
must be a valid pointer to a VkFormatProperties2
structure"
}
]
},
"VkFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkFormatProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2
"
},
{
"vuid": "VUID-VkFormatProperties2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkDrmFormatModifierPropertiesListEXT"
}
]
},
"VkDrmFormatModifierPropertiesListEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
"
}
]
},
"vkGetPhysicalDeviceImageFormatProperties": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
"text": " tiling
must not be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
. (Use vkGetPhysicalDeviceImageFormatProperties2 instead)."
}
],
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
"text": " pImageFormatProperties
must be a valid pointer to a VkImageFormatProperties
structure"
}
]
},
"vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
"(VK_NV_external_memory_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
"text": " externalHandleType
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
"text": " pExternalImageFormatProperties
must be a valid pointer to a VkExternalImageFormatPropertiesNV
structure"
}
]
},
"vkGetPhysicalDeviceImageFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
"text": " If the pNext
chain of pImageFormatProperties
contains an instance of VkAndroidHardwareBufferUsageANDROID, the pNext
chain of pImageFormatInfo
must contain an instance of VkPhysicalDeviceExternalImageFormatInfo with handleType
set to VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
."
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
"text": " pImageFormatInfo
must be a valid pointer to a valid VkPhysicalDeviceImageFormatInfo2
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
"text": " pImageFormatProperties
must be a valid pointer to a VkImageFormatProperties2
structure"
}
]
},
"VkPhysicalDeviceImageFormatInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
"text": " tiling
must be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
if and only if the pNext
chain contains VkPhysicalDeviceImageDrmFormatModifierInfoEXT."
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
"text": " If tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
and flags
contains VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, then the pNext
chain must contain VkImageFormatListCreateInfoKHR with non-zero viewFormatCount
."
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkImageFormatListCreateInfoKHR, VkImageStencilUsageCreateInfoEXT, VkPhysicalDeviceExternalImageFormatInfo, VkPhysicalDeviceImageDrmFormatModifierInfoEXT, or VkPhysicalDeviceImageViewImageFormatInfoEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
}
]
},
"VkImageFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkImageFormatProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
"
},
{
"vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkAndroidHardwareBufferUsageANDROID, VkExternalImageFormatProperties, VkFilterCubicImageViewImageFormatPropertiesEXT, VkSamplerYcbcrConversionImageFormatProperties, or VkTextureLODGatherFormatPropertiesAMD"
},
{
"vuid": "VUID-VkImageFormatProperties2-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
}
]
},
"VkTextureLODGatherFormatPropertiesAMD": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
{
"vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
"
}
]
},
"VkPhysicalDeviceExternalImageFormatInfo": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"VkExternalImageFormatProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
"
}
]
},
"VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, then pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values."
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, then queueFamilyIndexCount
must be greater than 1
."
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than the pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
."
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
"text": " sharingMode
must be a valid VkSharingMode value"
}
]
},
"VkSamplerYcbcrConversionImageFormatProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
"
}
]
},
"VkAndroidHardwareBufferUsageANDROID": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
"
}
]
},
"VkPhysicalDeviceImageViewImageFormatInfoEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
"text": " imageViewType
must be a valid VkImageViewType value"
}
]
},
"VkFilterCubicImageViewImageFormatPropertiesEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
"text": " If the pNext
chain of the VkImageFormatProperties2 structure contains an instance of VkFilterCubicImageViewImageFormatPropertiesEXT, the pNext
chain of the VkPhysicalDeviceImageFormatInfo2 structure must contain an instance of VkPhysicalDeviceImageViewImageFormatInfoEXT with an imageViewType
that is compatible with imageType
."
}
]
},
"vkGetPhysicalDeviceExternalBufferProperties": {
"(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
"text": " pExternalBufferInfo
must be a valid pointer to a valid VkPhysicalDeviceExternalBufferInfo
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
"text": " pExternalBufferProperties
must be a valid pointer to a VkExternalBufferProperties
structure"
}
]
},
"VkPhysicalDeviceExternalBufferInfo": {
"(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
"text": " flags
must be a valid combination of VkBufferCreateFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
"text": " usage
must be a valid combination of VkBufferUsageFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"VkExternalBufferProperties": {
"(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkExternalBufferProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
"
},
{
"vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceExternalSemaphoreProperties": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
"text": " pExternalSemaphoreInfo
must be a valid pointer to a valid VkPhysicalDeviceExternalSemaphoreInfo
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
"text": " pExternalSemaphoreProperties
must be a valid pointer to a VkExternalSemaphoreProperties
structure"
}
]
},
"VkPhysicalDeviceExternalSemaphoreInfo": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"VkExternalSemaphoreProperties": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
{
"vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
"
},
{
"vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceExternalFenceProperties": {
"(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
"text": " pExternalFenceInfo
must be a valid pointer to a valid VkPhysicalDeviceExternalFenceInfo
structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
"text": " pExternalFenceProperties
must be a valid pointer to a VkExternalFenceProperties
structure"
}
]
},
"VkPhysicalDeviceExternalFenceInfo": {
"(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"VkExternalFenceProperties": {
"(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-VkExternalFenceProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
"
},
{
"vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
"(VK_EXT_calibrated_timestamps)": [
{
"vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
"text": " pTimeDomainCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
"text": " If the value referenced by pTimeDomainCount
is not 0
, and pTimeDomains
is not NULL
, pTimeDomains
must be a valid pointer to an array of pTimeDomainCount
VkTimeDomainEXT values"
}
]
},
"vkSetDebugUtilsObjectNameEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
"text": " pNameInfo
->objectType
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
"text": " pNameInfo
->objectHandle
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
"text": " pNameInfo
must be a valid pointer to a valid VkDebugUtilsObjectNameInfoEXT
structure"
}
]
},
"VkDebugUtilsObjectNameInfoEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
"text": " If objectType
is VK_OBJECT_TYPE_UNKNOWN
, objectHandle
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
"text": " If objectType
is not VK_OBJECT_TYPE_UNKNOWN
, objectHandle
must be VK_NULL_HANDLE or a valid Vulkan handle of the type associated with objectType
as defined in the VkObjectType and Vulkan Handle Relationship table"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkObjectType value"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
"text": " If pObjectName
is not NULL
, pObjectName
must be a null-terminated UTF-8 string"
}
]
},
"vkSetDebugUtilsObjectTagEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
"text": " pTagInfo
must be a valid pointer to a valid VkDebugUtilsObjectTagInfoEXT
structure"
}
]
},
"VkDebugUtilsObjectTagInfoEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
"text": " objectType
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
"text": " objectHandle
must be a valid Vulkan handle of the type associated with objectType
as defined in the VkObjectType and Vulkan Handle Relationship table"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkObjectType value"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
"text": " pTag
must be a valid pointer to an array of tagSize
bytes"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
"text": " tagSize
must be greater than 0
"
}
]
},
"vkQueueBeginDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT
structure"
}
]
},
"VkDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
"text": " pLabelName
must be a null-terminated UTF-8 string"
}
]
},
"vkQueueEndDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
"text": " There must be an outstanding vkQueueBeginDebugUtilsLabelEXT
command prior to the vkQueueEndDebugUtilsLabelEXT
on the queue"
},
{
"vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
}
]
},
"vkQueueInsertDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT
structure"
}
]
},
"vkCmdBeginDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT
structure"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"vkCmdEndDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
"text": " There must be an outstanding vkCmdBeginDebugUtilsLabelEXT
command prior to the vkCmdEndDebugUtilsLabelEXT
on the queue that commandBuffer
is submitted to"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
"text": " If commandBuffer
is a secondary command buffer, there must be an outstanding vkCmdBeginDebugUtilsLabelEXT
command recorded to commandBuffer
that has not previously been ended by a call to vkCmdEndDebugUtilsLabelEXT
."
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"vkCmdInsertDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT
structure"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"vkCreateDebugUtilsMessengerEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDebugUtilsMessengerCreateInfoEXT
structure"
},
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
"text": " pMessenger
must be a valid pointer to a VkDebugUtilsMessengerEXT
handle"
}
]
},
"VkDebugUtilsMessengerCreateInfoEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
"text": " pfnUserCallback
must be a valid PFN_vkDebugUtilsMessengerCallbackEXT"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
"text": " messageSeverity
must be a valid combination of VkDebugUtilsMessageSeverityFlagBitsEXT values"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
"text": " messageSeverity
must not be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
"text": " messageType
must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
"text": " messageType
must not be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter",
"text": " pfnUserCallback
must be a valid PFN_vkDebugUtilsMessengerCallbackEXT value"
}
]
},
"VkDebugUtilsMessengerCallbackDataEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
"text": " If pMessageIdName
is not NULL
, pMessageIdName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
"text": " pMessage
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
"text": " If queueLabelCount
is not 0
, pQueueLabels
must be a valid pointer to an array of queueLabelCount
valid VkDebugUtilsLabelEXT
structures"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
"text": " If cmdBufLabelCount
is not 0
, pCmdBufLabels
must be a valid pointer to an array of cmdBufLabelCount
valid VkDebugUtilsLabelEXT
structures"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
"text": " If objectCount
is not 0
, pObjects
must be a valid pointer to an array of objectCount
valid VkDebugUtilsObjectNameInfoEXT
structures"
}
]
},
"vkSubmitDebugUtilsMessageEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
"text": " objectType
member of each element of pCallbackData
->pObjects
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
"text": " messageSeverity
must be a valid VkDebugUtilsMessageSeverityFlagBitsEXT value"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
"text": " messageTypes
must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
"text": " messageTypes
must not be 0
"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
"text": " pCallbackData
must be a valid pointer to a valid VkDebugUtilsMessengerCallbackDataEXT
structure"
}
]
},
"vkDestroyDebugUtilsMessengerEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
"text": " If VkAllocationCallbacks
were provided when messenger
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
"text": " If no VkAllocationCallbacks
were provided when messenger
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
"text": " messenger
must be a valid VkDebugUtilsMessengerEXT
handle"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
"text": " messenger
must have been created, allocated, or retrieved from instance
"
}
]
},
"vkDebugMarkerSetObjectNameEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
"text": " pNameInfo
must be a valid pointer to a valid VkDebugMarkerObjectNameInfoEXT
structure"
}
]
},
"VkDebugMarkerObjectNameInfoEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
"text": " objectType
must not be VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
"text": " object
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
"text": " object
must be a Vulkan object of the type associated with objectType
as defined in VkDebugReportObjectTypeEXT and Vulkan Handle Relationship."
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkDebugReportObjectTypeEXT value"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
"text": " pObjectName
must be a null-terminated UTF-8 string"
}
]
},
"vkDebugMarkerSetObjectTagEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
"text": " device
must be a valid VkDevice
handle"
},
{
"vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
"text": " pTagInfo
must be a valid pointer to a valid VkDebugMarkerObjectTagInfoEXT
structure"
}
]
},
"VkDebugMarkerObjectTagInfoEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
"text": " objectType
must not be VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
"text": " object
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
"text": " object
must be a Vulkan object of the type associated with objectType
as defined in VkDebugReportObjectTypeEXT and Vulkan Handle Relationship."
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkDebugReportObjectTypeEXT value"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
"text": " pTag
must be a valid pointer to an array of tagSize
bytes"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
"text": " tagSize
must be greater than 0
"
}
]
},
"vkCmdDebugMarkerBeginEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkDebugMarkerMarkerInfoEXT
structure"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"VkDebugMarkerMarkerInfoEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
"text": " pMarkerName
must be a null-terminated UTF-8 string"
}
]
},
"vkCmdDebugMarkerEndEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
"text": " There must be an outstanding vkCmdDebugMarkerBeginEXT command prior to the vkCmdDebugMarkerEndEXT
on the queue that commandBuffer
is submitted to"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
"text": " If commandBuffer
is a secondary command buffer, there must be an outstanding vkCmdDebugMarkerBeginEXT command recorded to commandBuffer
that has not previously been ended by a call to vkCmdDebugMarkerEndEXT."
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"vkCmdDebugMarkerInsertEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkDebugMarkerMarkerInfoEXT
structure"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"vkCreateDebugReportCallbackEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDebugReportCallbackCreateInfoEXT
structure"
},
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
"text": " pCallback
must be a valid pointer to a VkDebugReportCallbackEXT
handle"
}
]
},
"VkDebugReportCallbackCreateInfoEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
"text": " flags
must be a valid combination of VkDebugReportFlagBitsEXT values"
},
{
"vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter",
"text": " pfnCallback
must be a valid PFN_vkDebugReportCallbackEXT value"
}
]
},
"vkDebugReportMessageEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-vkDebugReportMessageEXT-object-01241",
"text": " object
must be a Vulkan object or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
"text": " If objectType
is not VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
and object
is not VK_NULL_HANDLE, object
must be a Vulkan object of the corresponding type associated with objectType
as defined in VkDebugReportObjectTypeEXT and Vulkan Handle Relationship."
},
{
"vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
"text": " flags
must be a valid combination of VkDebugReportFlagBitsEXT values"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
"text": " objectType
must be a valid VkDebugReportObjectTypeEXT value"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
"text": " pLayerPrefix
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
"text": " pMessage
must be a null-terminated UTF-8 string"
}
]
},
"vkDestroyDebugReportCallbackEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
"text": " If VkAllocationCallbacks
were provided when callback
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
"text": " If no VkAllocationCallbacks
were provided when callback
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
"text": " callback
must be a valid VkDebugReportCallbackEXT
handle"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
"text": " callback
must have been created, allocated, or retrieved from instance
"
}
]
},
"vkCmdSetCheckpointNV": {
"(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
}
]
},
"vkGetQueueCheckpointDataNV": {
"(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
"text": " The device that queue
belongs to must be in the lost state"
},
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
"text": " queue
must be a valid VkQueue
handle"
},
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
"text": " pCheckpointDataCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
"text": " If the value referenced by pCheckpointDataCount
is not 0
, and pCheckpointData
is not NULL
, pCheckpointData
must be a valid pointer to an array of pCheckpointDataCount
VkCheckpointDataNV
structures"
}
]
},
"VkCheckpointDataNV": {
"(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-VkCheckpointDataNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV
"
},
{
"vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
}
}
}