{
"version info": {
"schema version": 2,
"api version": "1.1.80",
"comment": "from git branch: master commit: 831e2d4525cc3231adfadc3bc6b0c8372e6f7f68",
"date": "2018-07-18 14:45:22Z"
},
"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 <<extended-functionality-extensions-dependencies, 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, 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
VkValidationCheckEXT values"
},
{
"vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
"text": " disabledValidationCheckCount
must be greater than 0
"
}
]
},
"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, VkPhysicalDeviceDescriptorIndexingPropertiesEXT, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDevicePointClippingProperties, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceSubgroupProperties, 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
"
}
]
},
"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
"
}
]
},
"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"
}
]
},
"vkCreateDevice": {
"core": [
{
"vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
"text": " All <<extended-functionality-extensions-dependencies, 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, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeaturesKHR, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeaturesEXT, VkPhysicalDeviceFeatures2, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceSamplerYcbcrConversionFeatures, or VkPhysicalDeviceVariablePointerFeatures"
},
{
"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"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<features-features-inheritedQueries,inherited queries>> feature is not enabled, occlusionQueryEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
"text": " If the <<features-features-inheritedQueries,inherited queries>> feature is enabled, queryFlags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
"text": " If the <<features-features-pipelineStatisticsQuery,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 <<features-features-inheritedConditionalRendering, 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 <<commandbuffers-lifecycle, 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 <<queries-operation-active,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-conditional-rendering,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 <<synchronization-pipeline-stages-supported, 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 <<synchronization-semaphores-signaling, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, pending state>>."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
"text": " Any <<commandbuffers-secondary, secondary command buffers recorded>> into any element of the pCommandBuffers
member of any element of pSubmits
must be in the <<commandbuffers-lifecycle, pending or executable state>>."
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
"text": " If any <<commandbuffers-secondary, 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 <<commandbuffers-lifecycle, 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-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 <<features-features-geometryShader,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 <<features-features-tessellationShader,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
"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<renderpass-compatibility,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 <<features-features-inheritedQueries,inherited queries>> feature is not enabled, commandBuffer
must not have any queries <<queries-operation-active,active>>"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
"text": " If commandBuffer
has a VK_QUERY_TYPE_OCCLUSION
query <<queries-operation-active,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 <<queries-operation-active,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 <<queries-operation-active,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 <<queries-operation-active,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 <<commandbuffers-lifecycle, 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."
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<synchronization-fences-importing,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 <<synchronization-fences-signaling,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 a 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 <<synchronization-fences-signaling,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 <<synchronization-fences-importing,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 <<devsandqueues-submission, 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 <<synchronization-fence-handletypes-win32, 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 <<synchronization-fence-handletypes-fd, 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,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 <<synchronization-semaphores-importing,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 <<synchronization-semaphores-importing,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 <<synchronization-semaphores-signaling,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 a 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 <<synchronization-semaphores-importing,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 <<synchronization-semaphores-importing,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 <<synchronization-semaphores-signaling,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 <<synchronization-semaphore-handletypes-win32,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 <<synchronization-semaphore-handletypes-fd,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,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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-01151",
"text": " If the <<features-features-tessellationShader,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 <<commandbuffers-lifecycle, 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."
}
]
},
"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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, stageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-01155",
"text": " If the <<features-features-tessellationShader,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 <<commandbuffers-lifecycle, 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."
}
]
},
"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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160",
"text": " If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161",
"text": " If the <<features-features-tessellationShader,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 <<features-features-tessellationShader,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 <<synchronization-pipeline-stages-supported, 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 <<synchronization-access-types-supported, 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 <<synchronization-access-types-supported, 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 <<commandbuffers-lifecycle, 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."
}
]
},
"vkCmdPipelineBarrier": {
"core": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168",
"text": " If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169",
"text": " If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170",
"text": " If the <<features-features-tessellationShader,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 <<features-features-tessellationShader,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-01172",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the render pass must have been created with a VkSubpassDependency
instance in pDependencies
that expresses a dependency from the current subpass to itself."
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01173",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, srcStageMask
must contain a subset of the bit values in the srcStageMask
member of that instance of VkSubpassDependency
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01174",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, dstStageMask
must contain a subset of the bit values in the dstStageMask
member of that instance of VkSubpassDependency
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-01175",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the srcAccessMask
of any element of pMemoryBarriers
or pImageMemoryBarriers
must contain a subset of the bit values the srcAccessMask
member of that instance of VkSubpassDependency
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-01176",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, the dstAccessMask
of any element of pMemoryBarriers
or pImageMemoryBarriers
must contain a subset of the bit values the dstAccessMask
member of that instance of VkSubpassDependency
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01177",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, dependencyFlags
must be equal to the dependencyFlags
member of that instance of VkSubpassDependency
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
"text": " If vkCmdPipelineBarrier
is called within a render pass instance, bufferMemoryBarrierCount
must be 0
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-image-01179",
"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-01180",
"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
"
},
{
"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 <<synchronization-pipeline-stages-supported, 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 <<synchronization-access-types-supported, 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 <<synchronization-access-types-supported, 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 <<commandbuffers-lifecycle, recording state>>"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
}
],
"(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
"
}
]
},
"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 <<devsandqueues-queueprops>>)"
}
],
"(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 <<synchronization-queue-transfers>>."
},
{
"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 <<synchronization-queue-transfers>>."
},
{
"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 <<synchronization-queue-transfers>>."
}
]
},
"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 <<devsandqueues-queueprops>>)."
}
],
"(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 <<synchronization-queue-transfers>>."
},
{
"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 <<synchronization-queue-transfers>>."
},
{
"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 <<synchronization-queue-transfers>>."
}
],
"(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"
}
]
},
"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"
}
]
},
"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-None-00832",
"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-VkRenderPassCreateInfo-attachment-00833",
"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 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 VkAttachmentDescription
structures describing them must include VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
in flags
"
},
{
"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-pPreserveAttachments-00835",
"text": " The value of each element of the pPreserveAttachments
member in each element of pSubpasses
must not be VK_ATTACHMENT_UNUSED
"
},
{
"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-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 <<synchronization-pipeline-stages-types, 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 <<synchronization-pipeline-stages-types, pipeline>> identified by the pipelineBindPoint
member of the source subpass."
},
{
"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 VkRenderPassInputAttachmentAspectCreateInfo or VkRenderPassMultiviewCreateInfo"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"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, the aspectMask
member of any element of pAspectReferences
must only include aspects that are present in images of the format
of the input attachment specified by the subpass
and inputAttachment
of the same element of pAspectReferences
"
}
],
"(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"
}
]
},
"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"
}
]
},
"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
"
}
]
},
"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 does not have the value VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not have the value VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
"text": " If pResolveAttachments
is not NULL
, the sample count of each element of pColorAttachments
must be anything other than VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
"text": " Each element of pResolveAttachments
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
"text": " Each element of pResolveAttachments
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-None-00852",
"text": " If any input attachments are VK_ATTACHMENT_UNUSED
, then any pipelines bound during the subpass must not access those input attachments from the fragment shader"
},
{
"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-00855",
"text": " If any attachment is used as both an input attachment and a color or depth/stencil attachment, 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": " 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_AMD_mixed_attachment_samples)+!(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
"text": " If pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
and any attachments in pColorAttachments
are not VK_ATTACHMENT_UNUSED
, they must have the same sample count"
}
],
"(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": " 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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
"text": " If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
"text": " If the <<features-features-tessellationShader,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 <<features-features-tessellationShader,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-00866",
"text": " If srcSubpass
is equal to dstSubpass
, srcStageMask
and dstStageMask
must only contain one of VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
,"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
"text": " If srcSubpass
is equal to dstSubpass
and not all of the stages in srcStageMask
and dstStageMask
are <<synchronization-framebuffer-regions,framebuffer-space stages>>, the <<synchronization-pipeline-stages-order, logically latest>> pipeline stage in srcStageMask
must be <<synchronization-pipeline-stages-order, logically earlier>> than or equal to the <<synchronization-pipeline-stages-order, 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 <<synchronization-access-types-supported, 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 <<synchronization-access-types-supported, table of supported access types>>."
},
{
"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-00870",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, then both srcSubpass
and dstSubpass
must not equal VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency-dependencyFlags-00871",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, then the render pass must have multiview enabled"
},
{
"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
"
}
]
},
"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-pPreserveAttachments-03052",
"text": " The value of any element of the pPreserveAttachments
member in any given element of pSubpasses
must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-03053",
"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-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 <<synchronization-pipeline-stages-types, 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 <<synchronization-pipeline-stages-types, 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-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-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"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
, the sample count of each element of pColorAttachments
must be anything other than VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03067",
"text": " Any given element of pResolveAttachments
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-None-03072",
"text": " If any input attachments are VK_ATTACHMENT_UNUSED
, then any pipelines bound during the subpass must not access those input attachments from the fragment shader"
},
{
"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-03075",
"text": " If any attachment is used as both an input attachment and a color or depth/stencil attachment, 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-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": " 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_AMD_mixed_attachment_samples)+!(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071",
"text": " If pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
and any attachments in pColorAttachments
are not VK_ATTACHMENT_UNUSED
, they must have the same sample count"
}
],
"(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
."
}
]
},
"VkAttachmentReference2KHR": {
"(VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkAttachmentReference2KHR-layout-03077",
"text": " 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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, srcStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03081",
"text": " If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, dstStageMask
must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03082",
"text": " If the <<features-features-tessellationShader,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 <<features-features-tessellationShader,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-03086",
"text": " If srcSubpass
is equal to dstSubpass
, srcStageMask
and dstStageMask
must only contain one of VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
, VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
, VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
, VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
, VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
, VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT
, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT
, or VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03087",
"text": " If srcSubpass
is equal to dstSubpass
and not all of the stages in srcStageMask
and dstStageMask
are <<synchronization-framebuffer-regions,framebuffer-space stages>>, the <<synchronization-pipeline-stages-order, logically latest>> pipeline stage in srcStageMask
must be <<synchronization-pipeline-stages-order, logically earlier>> than or equal to the <<synchronization-pipeline-stages-order, 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 <<synchronization-access-types-supported, 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 <<synchronization-access-types-supported, 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-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"
}
]
},
"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-00878",
"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-00882",
"text": " Each element of pAttachments
must have dimensions at least as large as the corresponding framebuffer dimension"
},
{
"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_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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
set"
},
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
set"
},
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
set"
},
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
set"
},
{
"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-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 <<commandbuffers-lifecycle, 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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
],
"(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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
]
},
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
set"
},
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
set"
},
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
set"
},
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
set"
},
{
"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-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 <<commandbuffers-lifecycle, 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
"
}
],
"(VK_KHR_create_renderpass2)+!(VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03095",
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
],
"(VK_KHR_create_renderpass2)+(VK_KHR_maintenance2)": [
{
"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 subresource of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
]
},
"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-clearValueCount-00903",
"text": " If clearValueCount
is not 0
, pClearValues
must be a valid pointer to an array of clearValueCount
valid VkClearValue
unions"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
"text": " renderPass
must be <<renderpass-compatibility,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-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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<spirvenv-module-validation, Capabilities>> section of the <<spirvenv-capabilities,SPIR-V Environment>> appendix"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
"text": " If pCode
declares any of the capabilities listed as optional in the <<spirvenv-capabilities-table,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 \\(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 <<spirv-spec,Khronos SPIR-V Specification>>"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
"text": " pCode
must adhere to the validation rules described by the <<spirvenv-module-validation, Validation Rules within a Module>> section of the <<spirvenv-capabilities,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 <<spirvenv-module-validation, Validation Rules within a Module>> section of the <<spirvenv-capabilities,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
"
}
]
},
"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 <<interfaces,Shader Interfaces>> chapter"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
"text": " layout
must be <<descriptorsets-pipelinelayout-consistency,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
"
},
{
"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 <<features-features-geometryShader,geometry shaders>> feature is not enabled, stage
must not be VK_SHADER_STAGE_GEOMETRY_BIT
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
"text": " If the <<features-features-tessellationShader,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-00716",
"text": " If stage
is VK_SHADER_STAGE_GEOMETRY_BIT
, 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-00717",
"text": " If stage
is VK_SHADER_STAGE_GEOMETRY_BIT
, 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_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-00727",
"text": " The stage
member of one element of pStages
must be VK_SHADER_STAGE_VERTEX_BIT
"
},
{
"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 <<shaders-geometry-execution, 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 <<shaders-geometry-execution, 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 <<interfaces,Shader Interfaces>> chapter"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00745",
"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 format
of the attachment does not support color blend operations, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"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
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 <<descriptorsets-pipelinelayout-consistency,consistent>> with all shaders specified in pStages
"
},
{
"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 <<renderpass-noattachments, 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-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineDiscardRectangleStateCreateInfoEXT"
},
{
"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-pVertexInputState-parameter",
"text": " pVertexInputState
must be a valid pointer to a valid VkPipelineVertexInputStateCreateInfo
structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pInputAssemblyState-parameter",
"text": " pInputAssemblyState
must be a valid pointer to a valid VkPipelineInputAssemblyStateCreateInfo
structure"
},
{
"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_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-00755",
"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)+!(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
"text": " 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"
}
],
"(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
"text": " 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 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 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_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"
}
]
},
"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": " pDynamicStates
must be a valid pointer to an array of dynamicStateCount
valid VkDynamicState values"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-dynamicStateCount-arraylength",
"text": " dynamicStateCount
must be greater than 0
"
}
]
},
"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-mapEntryCount-00775",
"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 <<features-features-variableMultisampleRate,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 <<commandbuffers-lifecycle, 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"
}
]
},
"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
"
}
]
},
"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": " pNext
must be NULL
"
}
]
},
"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-None-01873",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BIT_ANDROID
:"
},
{
"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-01875",
"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:"
}
],
"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, or VkMemoryDedicatedAllocateInfo"
},
{
"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."
}
]
},
"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"
}
]
},
"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,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 a 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"
}
]
},
"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 format and usage compatible with Vulkan as described by VkExternalMemoryHandleTypeFlagBits."
},
{
"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 a 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 a 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
."
}
]
},
"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_
* usage flags."
},
{
"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"
}
]
},
"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 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 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 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 <<features-features-sparseBinding,sparse bindings>> feature is not enabled, flags
must not contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00916",
"text": " If the <<features-features-sparseResidencyBuffer,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 <<features-features-sparseResidencyAliased,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 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
"
}
]
},
"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"
}
]
},
"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-00926",
"text": " 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 a multiple of the element size of format
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-range-00930",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
divided by the element size of format
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"
}
]
},
"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": {
"!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageCreateInfo-format-00940",
"text": " The combination of format
, imageType
, tiling
, usage
, and flags
must be supported, as indicated by a VK_SUCCESS
return value from vkGetPhysicalDeviceImageFormatProperties
invoked with the same values passed to the corresponding parameters."
},
{
"vuid": "VUID-VkImageCreateInfo-format-00943",
"text": " format
must not be VK_FORMAT_UNDEFINED
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-01889",
"text": " If the pNext
chain does not contain an instance of VkExternalFormatANDROID, or if format
is not VK_FORMAT_UNDEFINED
, the combination of format
, imageType
, tiling
, usage
, and flags
must be supported, as indicated by a VK_SUCCESS
return value from vkGetPhysicalDeviceImageFormatProperties
invoked with the same values passed to the corresponding parameters."
},
{
"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-01892",
"text": " If the pNext
chain includes a VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
:"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-01893",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
:"
}
],
"core": [
{
"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-imageType-00951",
"text": " If imageType
is VK_IMAGE_TYPE_1D
, extent.width
must be less than or equal to VkPhysicalDeviceLimits
::maxImageDimension1D
, or VkImageFormatProperties
::maxExtent.width
(as returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure) - whichever is higher"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00952",
"text": " If imageType
is VK_IMAGE_TYPE_2D
and flags
does not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, extent.width
and extent.height
must be less than or equal to VkPhysicalDeviceLimits
::maxImageDimension2D
, or VkImageFormatProperties
::maxExtent.width
/height
(as returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure) - whichever is higher"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00953",
"text": " If imageType
is VK_IMAGE_TYPE_2D
and flags
contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, extent.width
and extent.height
must be less than or equal to VkPhysicalDeviceLimits
::maxImageDimensionCube
, or VkImageFormatProperties
::maxExtent.width
/height
(as returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure) - whichever is higher"
},
{
"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-00955",
"text": " If imageType
is VK_IMAGE_TYPE_3D
, extent.width
, extent.height
and extent.depth
must be less than or equal to VkPhysicalDeviceLimits
::maxImageDimension3D
, or VkImageFormatProperties
::maxExtent.width
/height
/depth
(as returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure) - whichever is higher"
},
{
"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 {lfloor}log2(max(extent.width
, extent.height
, extent.depth
)){rfloor} + 1."
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00959",
"text": " mipLevels
must be less than or equal to VkImageFormatProperties
::maxMipLevels
(as returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure)"
},
{
"vuid": "VUID-VkImageCreateInfo-arrayLayers-00960",
"text": " arrayLayers
must be less than or equal to VkImageFormatProperties
::maxArrayLayers
(as returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure)"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00961",
"text": " If imageType
is VK_IMAGE_TYPE_3D
, arrayLayers
must be 1
."
},
{
"vuid": "VUID-VkImageCreateInfo-samples-00962",
"text": " If samples
is not VK_SAMPLE_COUNT_1_BIT
, imageType
must be VK_IMAGE_TYPE_2D
, flags
must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, tiling
must be VK_IMAGE_TILING_OPTIMAL
, and mipLevels
must be equal to 1
"
},
{
"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-00967",
"text": " samples
must be a bit value that is set in VkImageFormatProperties
::sampleCounts
returned by vkGetPhysicalDeviceImageFormatProperties
with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00968",
"text": " If the <<features-features-shaderStorageImageMultisample,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 <<features-features-sparseBinding,sparse bindings>> feature is not enabled, flags
must not contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-01924",
"text": " If the <<features-features-sparseResidencyAliased,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 <<features-features-sparseResidencyImage2D,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 <<features-features-sparseResidencyImage3D,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 <<features-features-sparseResidency2Samples,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 <<features-features-sparseResidency4Samples,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 <<features-features-sparseResidency8Samples,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 <<features-features-sparseResidency16Samples,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, VkImageFormatListCreateInfoKHR, 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_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-00992",
"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 tiling
must be VK_IMAGE_TILING_OPTIMAL
"
}
],
"(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 <<appendix-compressedtex-bc,block-compressed image format>>, an <<appendix-compressedtex-etc2, ETC compressed image format>>, or an <<appendix-compressedtex-astc, 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-01574",
"text": " If the image format
is one of those listed in <<features-formats-requiring-sampler-ycbcr-conversion>>:"
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-01575",
"text": " If tiling
is VK_IMAGE_TILING_OPTIMAL
, format
is a multi-planar format, and VkFormatProperties
::optimalTilingFeatures
(as returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
) does not include VK_FORMAT_FEATURE_DISJOINT_BIT
, flags
must not contain VK_IMAGE_CREATE_DISJOINT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-01576",
"text": " If tiling
is VK_IMAGE_TILING_LINEAR
, format
is a multi-planar format, and VkFormatProperties
::linearTilingFeatures
(as returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
) does not include VK_FORMAT_FEATURE_DISJOINT_BIT
, 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_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"
}
]
},
"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 <<swapchain-wsi-image-create-info, 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"
}
]
},
"vkGetImageSubresourceLayout": {
"core": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
"
},
{
"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 format
of image
is a <<features-formats-requiring-sampler-ycbcr-conversion,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 format
of image
is a <<features-formats-requiring-sampler-ycbcr-conversion,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
"
}
]
},
"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 <<features-features-imageCubeArray,image cubemap arrays>> feature is not enabled, viewType
must not be VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01006",
"text": " If image
was created with VK_IMAGE_TILING_LINEAR
, format
must be format that has at least one supported feature bit present in the value of VkFormatProperties
::linearTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"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
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01008",
"text": " If image
was created with VK_IMAGE_TILING_LINEAR
and usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, format
must be supported for sampled images, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
flag in VkFormatProperties
::linearTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01009",
"text": " If image
was created with VK_IMAGE_TILING_LINEAR
and usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, format
must be supported for storage images, as specified by the VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
flag in VkFormatProperties
::linearTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01010",
"text": " If image
was created with VK_IMAGE_TILING_LINEAR
and usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, format
must be supported for color attachments, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
flag in VkFormatProperties
::linearTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01011",
"text": " If image
was created with VK_IMAGE_TILING_LINEAR
and usage
contains VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, format
must be supported for depth/stencil attachments, as specified by the VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
flag in VkFormatProperties
::linearTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"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 <<features-formats-compatibility-classes,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 <<resources-image-views-compatibility,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 VkImageViewUsageCreateInfo or VkSamplerYcbcrConversionInfo"
},
{
"vuid": "VUID-VkImageViewCreateInfo-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"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-01484",
"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 extent.depth
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01485",
"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 extent.depth
specified in VkImageCreateInfo when image
was created"
}
],
"!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01012",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
, format
must be format that has at least one supported feature bit present in the value of VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01013",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
and usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, format
must be supported for sampled images, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01014",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
and usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, format
must be supported for storage images, as specified by the VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01015",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
and usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, format
must be supported for color attachments, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01016",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
and usage
contains VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, format
must be supported for depth/stencil attachments, as specified by the VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01965",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
and format
is not VK_FORMAT_UNDEFINED
, format
must be format that has at least one supported feature bit present in the value of VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01966",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
, and format
is not VK_FORMAT_UNDEFINED
, and usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, format
must be supported for sampled images, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01967",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
, and format
is not VK_FORMAT_UNDEFINED
, and usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, format
must be supported for storage images, as specified by the VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01968",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
, and format
is not VK_FORMAT_UNDEFINED
, and usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, format
must be supported for color attachments, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01969",
"text": " If image
was created with VK_IMAGE_TILING_OPTIMAL
, and format
is not VK_FORMAT_UNDEFINED
, and usage
contains VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, format
must be supported for depth/stencil attachments, as specified by the VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
with the same value of format
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01896",
"text": " If image
has an <<memory-external-android-hardware-buffer-external-formats,external format>>:"
}
],
"!(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 <<features-formats-compatibility-classes,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 <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>> format, format
must be compatible with the format
used to create image
, as defined in <<features-formats-compatibility-classes,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 <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar>> format, format
must be compatible with the format
used to create image
, as defined in <<features-formats-compatibility-classes,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 <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-compatible-planes>>"
},
{
"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 <<features-formats-requiring-sampler-ycbcr-conversion,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
"
}
]
},
"VkImageViewUsageCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageViewUsageCreateInfo-usage-01587",
"text": " usage
must not include any set bits that were not set in the usage
member of the VkImageCreateInfo structure used to create the image this image view is created from."
},
{
"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
"
}
]
},
"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"
}
]
},
"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
"
}
]
},
"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"
},
{
"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-01592",
"text": " planeAspect
must be an aspect that exists in the format; 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"
}
]
},
"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"
}
]
},
"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
"
},
{
"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)": [
{
"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"
}
]
},
"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"
},
{
"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_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-01642",
"text": " planeAspect
must be a single valid plane aspect for the image format (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"
}
]
},
"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 <<features-features-samplerAnisotropy,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-zerobitmask",
"text": " flags
must be 0
"
},
{
"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 <<samplers-YCbCr-conversion,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 <<samplers-YCbCr-conversion,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 <<samplers-YCbCr-conversion,sampler Y’CBCR conversion>> is enabled"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
"text": " If either magFilter
or minFilter
is VK_FILTER_CUBIC_IMG
, anisotropyEnable
must be VK_FALSE
"
}
],
"(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
"text": " If either magFilter
or minFilter
is VK_FILTER_CUBIC_IMG
, 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
"
}
]
},
"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 <<features-features-sampler-YCbCr-conversion, 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-None-01654",
"text": " If the format has a _422
or _420
suffix:"
},
{
"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 <<textures-conversion-to-rgba,conversion to RGBA>>"
},
{
"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_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"
}
]
},
"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
, pBindingFlags
must be a valid pointer to an array of bindingCount
valid combinations of VkDescriptorBindingFlagBitsEXT values"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-requiredbitmask",
"text": " Each element of pBindingFlags
must not be 0
"
}
],
"(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
"
}
]
},
"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)": [
{
"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_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"
}
]
},
"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-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
"
},
{
"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
"
}
]
},
"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"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle,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 <<descriptorsets-updates-consecutive>>"
},
{
"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-01947",
"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
"
},
{
"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 a immutable sampler that enables <<samplers-YCbCr-conversion,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 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"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": " pNext
must be NULL
"
},
{
"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_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"
},
{
"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 <<features-formats-requiring-sampler-ycbcr-conversion,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
"
}
]
},
"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 <<descriptorsets-updates-consecutive>>"
},
{
"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 <<descriptorsets-updates-consecutive>>"
},
{
"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 <<descriptorsets-updates-consecutive>>"
},
{
"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_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 <<descriptorsets-updates-consecutive>>"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<features-features-pipelineStatisticsQuery,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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<queries-operation-active,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 <<features-features-occlusionQueryPrecise,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 <<commandbuffers-lifecycle, 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 vkCmdBeginQuery
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
"
}
]
},
"vkCmdEndQuery": {
"core": [
{
"vuid": "VUID-vkCmdEndQuery-None-01923",
"text": " All queries used by the command must be <<queries-operation-active,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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<queries-operation-memorylayout,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 <<queries-operation-memorylayout,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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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 <<commandbuffers-lifecycle, 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
"
}
]
},
"vkCmdClearColorImage": {
"!(VK_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdClearColorImage-image-00001",
"text": " image
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdClearColorImage-image-01935",
"text": " image
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"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-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 <<commandbuffers-lifecycle, 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 <<features-formats-requiring-sampler-ycbcr-conversion>>"
}
],
"!(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_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00008",
"text": " image
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-01936",
"text": " image
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"core": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
"text": " image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"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-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 <<commandbuffers-lifecycle, 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-00015",
"text": " If the aspectMask
member of any element of pAttachments
contains VK_IMAGE_ASPECT_COLOR_BIT
, the colorAttachment
member of that element must refer to a valid color attachment in the current subpass"
},
{
"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 <<commandbuffers-lifecycle, 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,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_VERSION_1_1)": [
{
"vuid": "VUID-VkClearAttachment-commandBuffer-01809",
"text": " If commandBuffer
is an unprotected command buffer, then the attachment to be cleared must not be a protected image."
},
{
"vuid": "VUID-VkClearAttachment-commandBuffer-01810",
"text": " If commandBuffer
is a protected command buffer, then the attachment to be cleared must not be an unprotected image."
}
]
},
"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-00022",
"text": " depth
must be between 0.0
and 1.0
, inclusive"
}
]
},
"VkClearValue": {
"core": [
{
"vuid": "VUID-VkClearValue-depthStencil-00023",
"text": " depthStencil
must be a valid VkClearDepthStencilValue
structure"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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-size-00112",
"text": " The size
member of each element of pRegions
must be greater than 0
"
},
{
"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
VkBufferCopy
structures"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, 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"
}
]
},
"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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00125",
"text": " srcImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-00130",
"text": " dstImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01938",
"text": " srcImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01939",
"text": " dstImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"!(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 <<copies-images-format-compatibility, below>>"
}
],
"(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 <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar format>>, the VkFormat of each of srcImage
and dstImage
must be compatible, as defined <<copies-images-format-compatibility, below>>"
},
{
"vuid": "VUID-vkCmdCopyImage-None-01549",
"text": " In a copy to or from a plane of a <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar image>>, the VkFormat of the image and plane must be compatible according to <<features-formats-compatible-planes,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 <<features-formats-requiring-sampler-ycbcr-conversion,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"
}
]
},
"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 <<features-formats-requiring-sampler-ycbcr-conversion, 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 <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-requiring-sampler-ycbcr-conversion,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 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
"
}
]
},
"vkCmdCopyBufferToImage": {
"core": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
"text": " srcBuffer
must be large enough to contain all buffer locations that are accessed according to <<copies-buffers-images-addressing,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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00175",
"text": " dstImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01940",
"text": " dstImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"!(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"
}
]
},
"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 <<copies-buffers-images-addressing,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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00185",
"text": " srcImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01941",
"text": " srcImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"!(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"
}
]
},
"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 element 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 <<features-formats-requiring-sampler-ycbcr-conversion,multi-planar format>>, then bufferOffset
must be a multiple of the format’s element size"
},
{
"vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
"text": " If the calling command’s VkImage
parameter’s format is a <<features-formats-requiring-sampler-ycbcr-conversion,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 <<features-formats-compatible-planes>>"
},
{
"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 <<features-formats-requiring-sampler-ycbcr-conversion,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-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]"
},
{
"vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
"text": " imageSubresource
must be a valid VkImageSubresourceLayers
structure"
}
]
},
"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-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-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-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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00218",
"text": " srcImage
must use a format that supports VK_FORMAT_FEATURE_BLIT_SRC_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00223",
"text": " dstImage
must use a format that supports VK_FORMAT_FEATURE_BLIT_DST_BIT
, which is indicated by VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-00235",
"text": " If filter
is VK_FILTER_LINEAR
, srcImage
must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImage-01942",
"text": " srcImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-01943",
"text": " dstImage
must use a format that supports VK_FORMAT_FEATURE_TRANSFER_DST_BIT
, which is indicated by VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-01944",
"text": " If filter
is VK_FILTER_LINEAR
, srcImage
must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImage-01561",
"text": " srcImage
must not use a format listed in <<features-formats-requiring-sampler-ycbcr-conversion>>"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-01562",
"text": " dstImage
must not use a format listed in <<features-formats-requiring-sampler-ycbcr-conversion>>"
}
],
"!(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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdBlitImage-filter-00236",
"text": " If filter
is VK_FILTER_CUBIC_IMG
, srcImage
must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdBlitImage-filter-01945",
"text": " If filter
is VK_FILTER_CUBIC_IMG
, srcImage
must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned byvkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdBlitImage-filter-00237",
"text": " If filter
is VK_FILTER_CUBIC_IMG
, 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"
}
]
},
"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-00264",
"text": " If dstImage
was created with tiling
equal to VK_IMAGE_TILING_LINEAR
, dstImage
must have been created with a format
that supports being a color attachment, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
flag in VkFormatProperties
::linearTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00265",
"text": " If dstImage
was created with tiling
equal to VK_IMAGE_TILING_OPTIMAL
, dstImage
must have been created with a format
that supports being a color attachment, as specified by the VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
flag in VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"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 <<commandbuffers-lifecycle, 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"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<features-features-geometryShader,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 <<features-features-tessellationShader,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 <<commandbuffers-lifecycle, 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
"
}
]
},
"vkCmdDraw": {
"core": [
{
"vuid": "VUID-vkCmdDraw-renderPass-00435",
"text": " The current render pass must be <<renderpass-compatibility,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-00436",
"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-00437",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDraw-None-00438",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDraw-None-00439",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDraw-None-00440",
"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-00441",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in <<fxvertex-input>>"
},
{
"vuid": "VUID-vkCmdDraw-None-00442",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDraw-None-00443",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command buffer"
},
{
"vuid": "VUID-vkCmdDraw-None-00444",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDraw-None-00445",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00446",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00447",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00448",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDraw-None-00449",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDraw-None-01499",
"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-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDraw-linearTilingFeatures-00450",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDraw-formatFeatures-01953",
"text": " Any VkImageView being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDraw-linearTilingFeatures-00451",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDraw-formatFeatures-01954",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-None-00452",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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_multiview)": [
{
"vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-00453",
"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_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDraw-commandBuffer-01850",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-01851",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-01852",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-01512",
"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-renderPass-00454",
"text": " The current render pass must be <<renderpass-compatibility,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-00455",
"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-00456",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00457",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00458",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00459",
"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-00460",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in <<fxvertex-input>>"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00461",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00462",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command buffer"
},
{
"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-None-00464",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00465",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00466",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00467",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00468",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-00469",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-01500",
"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-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexed-linearTilingFeatures-00470",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexed-formatFeatures-01955",
"text": " Any VkImageView being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexed-linearTilingFeatures-00471",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexed-formatFeatures-01956",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-00472",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-00473",
"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_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01853",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01854",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01855",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513",
"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-buffer-00474",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-01660",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-offset-00475",
"text": " offset
must be a multiple of 4
"
},
{
"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-00477",
"text": " If the multi-draw indirect feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
"text": " If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the firstInstance
members of the VkDrawIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-renderPass-00479",
"text": " The current render pass must be <<renderpass-compatibility,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-00480",
"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-00481",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00482",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00483",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00484",
"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-00485",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00486",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command buffer"
},
{
"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-drawCount-00489",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00490",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00491",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00492",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00493",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00494",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-00495",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-01501",
"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-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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndirect-linearTilingFeatures-00496",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndirect-formatFeatures-01957",
"text": " Any VkImageView being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndirect-linearTilingFeatures-00497",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndirect-formatFeatures-01958",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-00498",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-00499",
"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_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01856",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01857",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01858",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514",
"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 <<fxvertex-input>>"
},
{
"vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
"text": " If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, firstInstance
must be 0
"
}
]
},
"vkCmdDrawIndirectCountKHR": {
"(VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03104",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03105",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03106",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03107",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-offset-03108",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-countBufferOffset-03109",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"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-firstInstance-03112",
"text": " If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the firstInstance
members of the VkDrawIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-renderPass-03113",
"text": " The current render pass must be <<renderpass-compatibility,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-03114",
"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-03115",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03116",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03117",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03118",
"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-03119",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03120",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command 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-countBuffer-03123",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03124",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03125",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-03126",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-03127",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-03128",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03129",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-linearTilingFeatures-03130",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
(for a linear image) or VkFormatProperties
::optimalTilingFeatures
(for an optimally tiled image) returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03131",
"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-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 <<commandbuffers-lifecycle, 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)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-linearTilingFeatures-03169",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
(for a linear image) or VkFormatProperties
::optimalTilingFeatures
(for an optimally tiled image) returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03170",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-03132",
"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_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-03133",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-03134",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-03135",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountKHR-sampleLocationsEnable-03171",
"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"
}
]
},
"vkCmdDrawIndirectCountAMD": {
"(VK_AMD_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01661",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01662",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-offset-00502",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-stride-00504",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-maxDrawCount-00505",
"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-vkCmdDrawIndirectCountAMD-firstInstance-00506",
"text": " If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the firstInstance
members of the VkDrawIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-renderPass-00507",
"text": " The current render pass must be <<renderpass-compatibility,compatible>> with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-subpass-00508",
"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-vkCmdDrawIndirectCountAMD-None-00509",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00510",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00511",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00512",
"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-vkCmdDrawIndirectCountAMD-None-00513",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00514",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command buffer"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00515",
"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-vkCmdDrawIndirectCountAMD-countBuffer-00516",
"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-vkCmdDrawIndirectCountAMD-countBuffer-00517",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00518",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00519",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-vkCmdDrawIndirectCountAMD-None-00520",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-vkCmdDrawIndirectCountAMD-None-00521",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-vkCmdDrawIndirectCountAMD-None-00522",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00523",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-None-01502",
"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-vkCmdDrawIndirectCountAMD-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, recording state>>"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_AMD_draw_indirect_count)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-linearTilingFeatures-00524",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_AMD_draw_indirect_count)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-formatFeatures-01959",
"text": " Any VkImageView being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-maxMultiviewInstanceIndex-00525",
"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_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01859",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01860",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01861",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515",
"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-buffer-00526",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-01665",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-offset-00527",
"text": " offset
must be a multiple of 4
"
},
{
"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-drawCount-00529",
"text": " If the multi-draw indirect feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
"text": " If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the firstInstance
members of the VkDrawIndexedIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-00531",
"text": " The current render pass must be <<renderpass-compatibility,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-00532",
"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-00533",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00534",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00535",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00536",
"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-00537",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00538",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command buffer"
},
{
"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-drawCount-00541",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00542",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00543",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00544",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00545",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-00546",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00547",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-01503",
"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-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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00548",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-formatFeatures-01960",
"text": " Any VkImageView being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-linearTilingFeatures-00549",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-formatFeatures-01961",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-00550",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-00551",
"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_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01862",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01863",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01864",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516",
"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 <<fxvertex-input>>"
},
{
"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 <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, firstInstance
must be 0
"
}
]
},
"vkCmdDrawIndexedIndirectCountKHR": {
"(VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03136",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03137",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03138",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03139",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-offset-03140",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBufferOffset-03141",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"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-firstInstance-03144",
"text": " If the <<features-features-drawIndirectFirstInstance,drawIndirectFirstInstance>> feature is not enabled, all the firstInstance
members of the VkDrawIndexedIndirectCommand
structures accessed by this command must be 0
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderPass-03145",
"text": " The current render pass must be <<renderpass-compatibility,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-03146",
"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-03147",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03148",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03149",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03150",
"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-03151",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03152",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command 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-drawCount-03155",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03156",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03157",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-03158",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-03159",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-03160",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03161",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-linearTilingFeatures-03162",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
(for a linear image) or VkFormatProperties
::optimalTilingFeatures
(for an optimally tiled image) returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03163",
"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-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 <<commandbuffers-lifecycle, 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)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-linearTilingFeatures-03172",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
(for a linear image) or VkFormatProperties
::optimalTilingFeatures
(for an optimally tiled image) returned by vkGetPhysicalDeviceFormatProperties
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-03164",
"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_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-03165",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-03166",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-03167",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-sampleLocationsEnable-03174",
"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"
}
]
},
"vkCmdDrawIndexedIndirectCountAMD": {
"(VK_AMD_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-stride-00557",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawIndexedIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxDrawCount-00558",
"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-vkCmdDrawIndexedIndirectCountAMD-firstInstance-00559",
"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-vkCmdDrawIndexedIndirectCountAMD-renderPass-00560",
"text": " The current render pass must be <<renderpass-compatibility,compatible>> with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-subpass-00561",
"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-vkCmdDrawIndexedIndirectCountAMD-None-00562",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00563",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_GRAPHICS
, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00564",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00565",
"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-vkCmdDrawIndexedIndirectCountAMD-None-00566",
"text": " A valid graphics pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00567",
"text": " If the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
requires any dynamic state, that state must have been set on the current command buffer"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00568",
"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-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00569",
"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-vkCmdDrawIndexedIndirectCountAMD-drawCount-00570",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00571",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00572",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-vkCmdDrawIndexedIndirectCountAMD-None-00573",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-vkCmdDrawIndexedIndirectCountAMD-None-00574",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
uses unnormalized coordinates, it 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-vkCmdDrawIndexedIndirectCountAMD-None-00575",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00576",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-01504",
"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-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-parameter",
"text": " buffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer
handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, recording state>>"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice
"
}
],
"(VK_AMD_draw_indirect_count)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-linearTilingFeatures-00577",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_AMD_draw_indirect_count)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-formatFeatures-01962",
"text": " Any VkImageView being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxMultiviewInstanceIndex-00578",
"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_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01865",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01866",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01867",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_GRAPHICS
reads from or writes to any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
],
"(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517",
"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-conditional-rendering,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 <<commandbuffers-lifecycle, 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"
}
]
},
"vkCmdEndConditionalRenderingEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
"text": " Conditional rendering must be <<active-conditional-rendering,active>>"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
"text": " If conditional rendering was made <<active-conditional-rendering,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-conditional-rendering,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 <<commandbuffers-lifecycle, recording state>>"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
}
]
},
"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 <<commandbuffers-lifecycle, 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-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"
}
]
},
"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-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 <<commandbuffers-lifecycle, 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 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
VkViewport
structures"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, 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-01234",
"text": " minDepth
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-VkViewport-maxDepth-01235",
"text": " maxDepth
must be between 0.0
and 1.0
, inclusive"
}
]
},
"VkPipelineRasterizationStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
"text": " If the <<features-features-depthClamp,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 or VkPipelineRasterizationStateRasterizationOrderAMD"
},
{
"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 <<features-features-fillModeNonSolid,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 <<features-features-fillModeNonSolid,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
"
}
]
},
"VkPipelineMultisampleStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
"text": " If the <<features-features-sampleRateShading,sample rate shading>> feature is not enabled, sampleShadingEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
"text": " If the <<features-features-alphaToOne,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, 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 subpass has any color attachments and rasterizationSamples
is greater than the number of color samples, then sampleShadingEnable
must be VK_FALSE
"
}
]
},
"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": " sampleLocationsPerPixel
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
"text": " pSampleLocations
must be a valid pointer to an array of sampleLocationsCount
VkSampleLocationEXT
structures"
},
{
"vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-arraylength",
"text": " sampleLocationsCount
must be greater than 0
"
}
]
},
"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 <<commandbuffers-lifecycle, recording state>>"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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
"
}
]
},
"VkPipelineDepthStencilStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
"text": " If the <<features-features-depthBounds,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 <<commandbuffers-lifecycle, 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-00600",
"text": " minDepthBounds
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, recording state>>"
},
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
]
},
"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
"
}
]
},
"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"
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableCount-arraylength",
"text": " coverageModulationTableCount
must be greater than 0
"
}
]
},
"VkPipelineColorBlendStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
"text": " If the <<features-features-independentBlend,independent blending>> feature is not enabled, all elements of pAttachments
must be identical"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
"text": " If the <<features-features-logicOp,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 <<features-features-dualSrcBlend,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 <<features-features-dualSrcBlend,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 <<features-features-dualSrcBlend,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 <<features-features-dualSrcBlend,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 <<framebuffer-blend-advanced,advanced blend operation>>, then colorBlendOp
must equal alphaBlendOp
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlend
is VK_FALSE
and colorBlendOp
is an <<framebuffer-blend-advanced,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 <<framebuffer-blend-advanced,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 <<framebuffer-blend-advanced,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 <<commandbuffers-lifecycle, 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 <<features-limits-advancedBlendNonPremultipliedSrcColor,non-premultiplied source color>> property is not supported, srcPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
"text": " If the <<features-limits-advancedBlendNonPremultipliedDstColor,non-premultiplied destination color>> property is not supported, dstPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
"text": " If the <<features-limits-advancedBlendCorrelatedOverlap,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-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-None-00389",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_COMPUTE
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDispatch-None-00390",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDispatch-None-00391",
"text": " A valid compute pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_COMPUTE
"
},
{
"vuid": "VUID-vkCmdDispatch-None-00392",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_COMPUTE
, with a VkPipelineLayout
that is compatible for push constants with the one used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDispatch-None-00393",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
uses unnormalized coordinates, it 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-00394",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
uses unnormalized coordinates, it 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-00395",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
uses unnormalized coordinates, it 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-00396",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_COMPUTE
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDispatch-None-00397",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_COMPUTE
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer
handle"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
"text": " commandBuffer
must be in the <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatch-linearTilingFeatures-00398",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatch-formatFeatures-01949",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatch-linearTilingFeatures-00399",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatch-formatFeatures-01950",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-None-00400",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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)": [
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-01844",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_COMPUTE
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-01845",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_POINT_COMPUTE
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-01846",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the VkPipeline
object bound to VK_PIPELINE_POINT_COMPUTE
reads from any image or buffer, the image or buffer must not be a protected image or protected buffer."
}
]
},
"vkCmdDispatchIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-00401",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-00402",
"text": " For each set n that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
, a descriptor set must have been bound to n at VK_PIPELINE_BIND_POINT_COMPUTE
, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-00403",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the bound VkPipeline
object, specified via vkCmdBindPipeline
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-00404",
"text": " A valid compute pipeline must be bound to the current command buffer with VK_PIPELINE_BIND_POINT_COMPUTE
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-00405",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-offset-00406",
"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-None-00408",
"text": " For each push constant that is statically used by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
, a push constant value must have been set for VK_PIPELINE_BIND_POINT_COMPUTE
, with a VkPipelineLayout
that is compatible for push constants with the one used to create the current VkPipeline
, as described in <<descriptorsets-compatibility>>"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-00409",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
uses unnormalized coordinates, it 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-00410",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
uses unnormalized coordinates, it 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-00411",
"text": " If any VkSampler
object that is accessed from a shader by the VkPipeline
bound to VK_PIPELINE_BIND_POINT_COMPUTE
uses unnormalized coordinates, it 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-00412",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_COMPUTE
accesses a uniform buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-00413",
"text": " If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_COMPUTE
accesses a storage buffer, it must not access values outside of the range of that buffer specified in the bound descriptor set"
},
{
"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 <<commandbuffers-lifecycle, 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_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-linearTilingFeatures-00414",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-formatFeatures-01951",
"text": " Any VkImageView
being sampled with VK_FILTER_LINEAR
as a result of this command must be of a format which supports linear filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-linearTilingFeatures-00415",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkFormatProperties
::linearTilingFeatures
or VkFormatProperties
::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties
for linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-formatFeatures-01952",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
as a result of this command must be of a format which supports cubic filtering, as specified by the VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG
flag in VkAndroidHardwareBufferFormatPropertiesANDROID::formatFeatures
returned by vkGetAndroidHardwareBufferPropertiesANDROID for external format images, or by VkFormatProperties::linearTilingFeatures
or VkFormatProperties::optimalTilingFeatures
returned by vkGetPhysicalDeviceFormatProperties for non-external format linearly or optimally tiled images, respectively"
}
],
"(VK_IMG_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-00416",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_IMG
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)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01847",
"text": " If commandBuffer
is an unprotected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_BIND_POINT_COMPUTE
reads from or writes to any image or buffer, that image or buffer must not be a protected image or protected buffer."
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01848",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage in the VkPipeline
object bound to VK_PIPELINE_POINT_COMPUTE
writes to any image or buffer, that image or buffer must not be an unprotected image or unprotected buffer."
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01849",
"text": " If commandBuffer
is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the VkPipeline
object bound to VK_PIPELINE_POINT_COMPUTE
reads from any image or buffer, the image or buffer must not be a protected image or protected 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-00420",
"text": " All valid usage rules from vkCmdDispatch apply"
},
{
"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 <<commandbuffers-lifecycle, 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"
}
]
},
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 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 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 <<resources-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"
}
]
},
"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 <<features-features-sparseResidencyAliased,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 <<resources-association>>"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
"text": " subresource
must be a valid image subresource for image
(see <<resources-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"
}
]
},
"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 <<synchronization-semaphores-signaling, 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
"
}
]
},
"vkCreateMirSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_mir_surface)": [
{
"vuid": "VUID-vkCreateMirSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance
handle"
},
{
"vuid": "VUID-vkCreateMirSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkMirSurfaceCreateInfoKHR
structure"
},
{
"vuid": "VUID-vkCreateMirSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks
structure"
},
{
"vuid": "VUID-vkCreateMirSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR
handle"
}
]
},
"VkMirSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_mir_surface)": [
{
"vuid": "VUID-VkMirSurfaceCreateInfoKHR-connection-01263",
"text": " connection
must point to a valid MirConnection
."
},
{
"vuid": "VUID-VkMirSurfaceCreateInfoKHR-surface-01264",
"text": " surface
must point to a valid MirSurface
."
},
{
"vuid": "VUID-VkMirSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkMirSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMirSurfaceCreateInfoKHR-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
"
}
]
},
"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
"
}
]
},
"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
"
}
]
},
"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-width-01250",
"text": " The width
and height
members of the visibleRegion
member of parameters
must be greater than 0
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-refreshRate-01251",
"text": " The refreshRate
member of parameters
must be greater than 0
"
},
{
"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
"
}
]
},
"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"
}
]
},
"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
"
}
]
},
"vkGetPhysicalDeviceMirPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_mir_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceMirPresentationSupportKHR-queueFamilyIndex-01265",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceMirPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice
handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceMirPresentationSupportKHR-connection-parameter",
"text": " connection
must be a valid pointer to a MirConnection
value"
}
]
},
"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 a 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)": [
{
"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)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR
handle"
}
]
},
"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": " pNext
must be NULL
or a pointer to a valid instance of VkSharedPresentSurfaceCapabilitiesKHR"
}
]
},
"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
"
}
]
},
"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 <<wsi-display-surfaces,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-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-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
"
}
]
},
"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
"
}
]
},
"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": " imageFormat
, imageUsage
, imageExtent
, and imageArrayLayers
must be supported for VK_IMAGE_TYPE_2D
VK_IMAGE_TILING_OPTIMAL
images 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 or VkSwapchainCounterCreateInfoEXT"
},
{
"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
"
}
]
},
"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
"
}
]
},
"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-semaphore-01804",
"text": " semaphore
and fence
must not both be equal to VK_NULL_HANDLE."
},
{
"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 <<synchronization-semaphores-signaling, 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, 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
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
"
}
]
},
"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
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceVariablePointerFeatures": {
"(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
{
"vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-variablePointers-01431",
"text": " If variablePointers
is enabled then variablePointersStorageBuffer
must also be enabled."
},
{
"vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_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
"
}
]
},
"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
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceShaderDrawParameterFeatures": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderDrawParameterFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES
"
}
]
},
"VkPhysicalDeviceDescriptorIndexingFeaturesEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_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
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceDescriptorIndexingPropertiesEXT": {
"(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_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
"
}
]
},
"VkPhysicalDeviceShaderCorePropertiesAMD": {
"(VK_AMD_shader_core_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
"
}
]
},
"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
"
}
]
},
"vkGetPhysicalDeviceImageFormatProperties": {
"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)": [
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPhysicalDeviceExternalImageFormatInfo"
},
{
"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, VkSamplerYcbcrConversionImageFormatProperties, or VkTextureLODGatherFormatPropertiesAMD"
},
{
"vuid": "VUID-VkImageFormatProperties2-sType-unique",
"text": " Each sType
member in the pNext
chain must be unique"
}
]
},
"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
"
}
]
},
"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
"
}
]
},
"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
"
}
]
},
"vkSetDebugUtilsObjectNameEXT": {
"(VK_EXT_debug_utils)": [
{
"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-01905",
"text": " objectType
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectHandle-01906",
"text": " objectHandle
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectHandle-01907",
"text": " objectHandle
must be a Vulkan object of the type associated with objectType
as defined in <<debugging-object-types>>."
},
{
"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-01909",
"text": " objectHandle
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
"text": " objectHandle
must be a Vulkan object of the type associated with objectType
as defined in <<debugging-object-types>>."
},
{
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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
"
}
]
},
"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-objectCount-arraylength",
"text": " objectCount
must be greater than 0
"
}
]
},
"vkSubmitDebugUtilsMessageEXT": {
"(VK_EXT_debug_utils)": [
{
"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 <<debug-report-object-types>>."
},
{
"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 <<debug-report-object-types>>."
},
{
"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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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 <<commandbuffers-lifecycle, 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-pfnCallback-01385",
"text": " pfnCallback
must be a valid PFN_vkDebugReportCallbackEXT"
},
{
"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"
}
]
},
"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 <<debug-report-object-types>>."
},
{
"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
"
}
]
}
}
}