{
"version info": {
"schema version": 2,
"api version": "1.3.231",
"comment": "from git branch: github-main commit: 7a319840243ea33aa4caa42cdce0143b150e02bb",
"date": "2022-10-13 07:21:21Z"
},
"validation": {
"vkGetInstanceProcAddr": {
"core": [
{
"vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
"text": " If instance
is not NULL
, instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
}
]
},
"vkGetDeviceProcAddr": {
"core": [
{
"vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
}
]
},
"vkEnumerateInstanceVersion": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
"text": " pApiVersion
must be a valid pointer to a uint32_t
value"
}
]
},
"vkCreateInstance": {
"core": [
{
"vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
"text": " All required extensions for each extension in the VkInstanceCreateInfo::ppEnabledExtensionNames
list must also be present in that list"
},
{
"vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkInstanceCreateInfo structure"
},
{
"vuid": "VUID-vkCreateInstance-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateInstance-pInstance-parameter",
"text": " pInstance
must be a valid pointer to a VkInstance handle"
}
]
},
"VkInstanceCreateInfo": {
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_EXT_debug_report)": [
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-04925",
"text": " If the pNext
chain of VkInstanceCreateInfo
includes a VkDebugReportCallbackCreateInfoEXT
structure, the list of enabled extensions in ppEnabledExtensionNames
must contain VK_EXT_debug_report
"
}
],
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-04926",
"text": " If the pNext
chain of VkInstanceCreateInfo
includes a VkDebugUtilsMessengerCreateInfoEXT
structure, the list of enabled extensions in ppEnabledExtensionNames
must contain VK_EXT_debug_utils
"
}
],
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkInstanceCreateInfo-pNext-06779",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be either VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT
or VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT
."
}
],
"(VK_EXT_debug_report,VK_EXT_debug_utils,VK_KHR_portability_enumeration)+(VK_KHR_portability_enumeration)": [
{
"vuid": "VUID-VkInstanceCreateInfo-flags-06559",
"text": " If flags
has the VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR
bit set, the list of enabled extensions in ppEnabledExtensionNames
must contain VK_KHR_portability_enumeration
"
}
],
"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, VkExportMetalObjectCreateInfoEXT, VkValidationFeaturesEXT, or VkValidationFlagsEXT"
},
{
"vuid": "VUID-VkInstanceCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkDebugUtilsMessengerCreateInfoEXT or VkExportMetalObjectCreateInfoEXT"
},
{
"vuid": "VUID-VkInstanceCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkInstanceCreateFlagBits values"
},
{
"vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
"text": " If pApplicationInfo
is not NULL
, pApplicationInfo
must be a valid pointer to a valid VkApplicationInfo structure"
},
{
"vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
"text": " If enabledLayerCount
is not 0
, ppEnabledLayerNames
must be a valid pointer to an array of enabledLayerCount
null-terminated UTF-8 strings"
},
{
"vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
"text": " If enabledExtensionCount
is not 0
, ppEnabledExtensionNames
must be a valid pointer to an array of enabledExtensionCount
null-terminated UTF-8 strings"
}
]
},
"VkValidationFlagsEXT": {
"(VK_EXT_validation_flags)": [
{
"vuid": "VUID-VkValidationFlagsEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT
"
},
{
"vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
"text": " pDisabledValidationChecks
must be a valid pointer to an array of disabledValidationCheckCount
valid VkValidationCheckEXT values"
},
{
"vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
"text": " disabledValidationCheckCount
must be greater than 0
"
}
]
},
"VkValidationFeaturesEXT": {
"(VK_EXT_validation_features)": [
{
"vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02967",
"text": " If the pEnabledValidationFeatures
array contains VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT
, then it must also contain VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT
"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02968",
"text": " If the pEnabledValidationFeatures
array contains VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT
, then it must not contain VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT
"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT
"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
"text": " If enabledValidationFeatureCount
is not 0
, pEnabledValidationFeatures
must be a valid pointer to an array of enabledValidationFeatureCount
valid VkValidationFeatureEnableEXT values"
},
{
"vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
"text": " If disabledValidationFeatureCount
is not 0
, pDisabledValidationFeatures
must be a valid pointer to an array of disabledValidationFeatureCount
valid VkValidationFeatureDisableEXT values"
}
]
},
"VkApplicationInfo": {
"core": [
{
"vuid": "VUID-VkApplicationInfo-apiVersion-04010",
"text": " If apiVersion
is not 0
, then it must be greater than or equal to VK_API_VERSION_1_0"
},
{
"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 VkPhysicalDeviceAccelerationStructurePropertiesKHR, VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceCustomBorderColorPropertiesEXT, VkPhysicalDeviceDepthStencilResolveProperties, VkPhysicalDeviceDescriptorIndexingProperties, VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDriverProperties, VkPhysicalDeviceDrmPropertiesEXT, VkPhysicalDeviceExtendedDynamicState3PropertiesEXT, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsProperties, VkPhysicalDeviceFragmentDensityMap2PropertiesEXT, VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR, VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV, VkPhysicalDeviceFragmentShadingRatePropertiesKHR, VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceImageProcessingPropertiesQCOM, VkPhysicalDeviceInlineUniformBlockProperties, VkPhysicalDeviceLineRasterizationPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMaintenance4Properties, VkPhysicalDeviceMeshShaderPropertiesEXT, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiDrawPropertiesEXT, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDeviceOpacityMicromapPropertiesEXT, VkPhysicalDeviceOpticalFlowPropertiesNV, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePerformanceQueryPropertiesKHR, VkPhysicalDevicePipelineRobustnessPropertiesEXT, VkPhysicalDevicePointClippingProperties, VkPhysicalDevicePortabilitySubsetPropertiesKHR, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDeviceProvokingVertexPropertiesEXT, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingPipelinePropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceRobustness2PropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxProperties, VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM, VkPhysicalDeviceShaderCoreProperties2AMD, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderIntegerDotProductProperties, VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceSubgroupSizeControlProperties, VkPhysicalDeviceSubpassShadingPropertiesHUAWEI, VkPhysicalDeviceTexelBufferAlignmentProperties, VkPhysicalDeviceTimelineSemaphoreProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, VkPhysicalDeviceVulkan11Properties, VkPhysicalDeviceVulkan12Properties, or VkPhysicalDeviceVulkan13Properties"
},
{
"vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkPhysicalDeviceVulkan11Properties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkan11Properties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES
"
}
]
},
"VkPhysicalDeviceVulkan12Properties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkan12Properties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES
"
}
]
},
"VkPhysicalDeviceVulkan13Properties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_3)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkan13Properties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceDriverProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2,VK_KHR_driver_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceDriverProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES
"
}
]
},
"VkPhysicalDevicePCIBusInfoPropertiesEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
{
"vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceDrmPropertiesEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_physical_device_drm)": [
{
"vuid": "VUID-VkPhysicalDeviceDrmPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceShaderIntegerDotProductProperties": {
"(VK_VERSION_1_3,VK_KHR_shader_integer_dot_product)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderIntegerDotProductProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES
"
}
]
},
"VkPhysicalDeviceImageProcessingPropertiesQCOM": {
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkPhysicalDeviceImageProcessingPropertiesQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM
"
}
]
},
"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": " 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 VkQueueFamilyCheckpointProperties2NV, VkQueueFamilyCheckpointPropertiesNV, VkQueueFamilyGlobalPriorityPropertiesKHR, VkQueueFamilyQueryResultStatusPropertiesKHR, or VkQueueFamilyVideoPropertiesKHR"
},
{
"vuid": "VUID-VkQueueFamilyProperties2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkQueueFamilyGlobalPriorityPropertiesKHR": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_global_priority_query,VK_KHR_global_priority)": [
{
"vuid": "VUID-VkQueueFamilyGlobalPriorityPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkQueueFamilyGlobalPriorityPropertiesKHR-priorities-parameter",
"text": " Any given element of priorities
must be a valid VkQueueGlobalPriorityKHR value"
}
]
},
"VkQueueFamilyCheckpointProperties2NV": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkQueueFamilyCheckpointProperties2NV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV
"
}
]
},
"VkQueueFamilyCheckpointPropertiesNV": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV
"
}
]
},
"vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterCount-parameter",
"text": " pCounterCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounters-parameter",
"text": " If the value referenced by pCounterCount
is not 0
, and pCounters
is not NULL
, pCounters
must be a valid pointer to an array of pCounterCount
VkPerformanceCounterKHR structures"
},
{
"vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterDescriptions-parameter",
"text": " If the value referenced by pCounterCount
is not 0
, and pCounterDescriptions
is not NULL
, pCounterDescriptions
must be a valid pointer to an array of pCounterCount
VkPerformanceCounterDescriptionKHR structures"
}
]
},
"VkPerformanceCounterKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPerformanceCounterKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR
"
},
{
"vuid": "VUID-VkPerformanceCounterKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkPerformanceCounterDescriptionKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPerformanceCounterDescriptionKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR
"
},
{
"vuid": "VUID-VkPerformanceCounterDescriptionKHR-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"
}
]
},
"VkPhysicalDeviceGroupProperties": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES
"
},
{
"vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCreateDevice": {
"core": [
{
"vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
"text": " All required device 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": {
"!(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
"text": " The queueFamilyIndex
member of each element of pQueueCreateInfos
must be unique within pQueueCreateInfos
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-02802",
"text": " The queueFamilyIndex
member of each element of pQueueCreateInfos
must be unique within pQueueCreateInfos
, except that two members can share the same queueFamilyIndex
if one describes protected-capable queues and one describes queues that are not protected-capable"
},
{
"vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-06755",
"text": " If multiple elements of pQueueCreateInfos
share the same queueFamilyIndex
, the sum of their queueCount
members must be less than or equal to the queueCount
member of the VkQueueFamilyProperties
structure, as returned by vkGetPhysicalDeviceQueueFamilyProperties
in the pQueueFamilyProperties
[queueFamilyIndex]"
}
],
"(VK_VERSION_1_1)+(VK_KHR_global_priority,VK_EXT_global_priority)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-06654",
"text": " If multiple elements of pQueueCreateInfos
share the same queueFamilyIndex
, then all of such elements must have the same global priority level, which can be specified explicitly by the including a VkDeviceQueueGlobalPriorityCreateInfoKHR structure in the pNext
chain, or by the implicit default value"
}
],
"(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
"
}
],
"(VK_EXT_buffer_device_address+VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328",
"text": " ppEnabledExtensionNames
must not contain both VK_KHR_buffer_device_address
and VK_EXT_buffer_device_address
"
}
],
"(VK_VERSION_1_2)+(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-04748",
"text": " if the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure and VkPhysicalDeviceVulkan12Features::bufferDeviceAddress
is VK_TRUE
, ppEnabledExtensionNames
must not contain VK_EXT_buffer_device_address
"
}
],
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-02829",
"text": " If the pNext
chain includes a VkPhysicalDeviceVulkan11Features structure, then it must not include a VkPhysicalDevice16BitStorageFeatures, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceSamplerYcbcrConversionFeatures, or VkPhysicalDeviceShaderDrawParametersFeatures structure"
},
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-02830",
"text": " If the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure, then it must not include a VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceBufferDeviceAddressFeatures, or VkPhysicalDeviceVulkanMemoryModelFeatures structure"
}
],
"(VK_VERSION_1_2)+(VK_KHR_shader_draw_parameters)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-04476",
"text": " If ppEnabledExtensionNames
contains \"VK_KHR_shader_draw_parameters\"
and the pNext
chain includes a VkPhysicalDeviceVulkan11Features structure, then VkPhysicalDeviceVulkan11Features
::shaderDrawParameters
must be VK_TRUE
"
}
],
"(VK_VERSION_1_2)+(VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02831",
"text": " If ppEnabledExtensionNames
contains \"VK_KHR_draw_indirect_count\"
and the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure, then VkPhysicalDeviceVulkan12Features
::drawIndirectCount
must be VK_TRUE
"
}
],
"(VK_VERSION_1_2)+(VK_KHR_sampler_mirror_clamp_to_edge)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02832",
"text": " If ppEnabledExtensionNames
contains \"VK_KHR_sampler_mirror_clamp_to_edge\"
and the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure, then VkPhysicalDeviceVulkan12Features
::samplerMirrorClampToEdge
must be VK_TRUE
"
}
],
"(VK_VERSION_1_2)+(VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02833",
"text": " If ppEnabledExtensionNames
contains \"VK_EXT_descriptor_indexing\"
and the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure, then VkPhysicalDeviceVulkan12Features
::descriptorIndexing
must be VK_TRUE
"
}
],
"(VK_VERSION_1_2)+(VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02834",
"text": " If ppEnabledExtensionNames
contains \"VK_EXT_sampler_filter_minmax\"
and the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure, then VkPhysicalDeviceVulkan12Features
::samplerFilterMinmax
must be VK_TRUE
"
}
],
"(VK_VERSION_1_2)+(VK_EXT_shader_viewport_index_layer)": [
{
"vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-02835",
"text": " If ppEnabledExtensionNames
contains \"VK_EXT_shader_viewport_index_layer\"
and the pNext
chain includes a VkPhysicalDeviceVulkan12Features structure, then VkPhysicalDeviceVulkan12Features
::shaderOutputViewportIndex
and VkPhysicalDeviceVulkan12Features
::shaderOutputLayer
must both be VK_TRUE
"
}
],
"(VK_VERSION_1_3)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pNext-06532",
"text": " If the pNext
chain includes a VkPhysicalDeviceVulkan13Features structure, then it must not include a VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceMaintenance4Features, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures structure"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkDeviceCreateInfo-pProperties-04451",
"text": " If the VK_KHR_portability_subset
extension is included in pProperties
of vkEnumerateDeviceExtensionProperties, ppEnabledExtensionNames
must include \"VK_KHR_portability_subset\"
"
}
],
"(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04478",
"text": " If the shadingRateImage
feature is enabled, the pipelineFragmentShadingRate
feature must not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04479",
"text": " If the shadingRateImage
feature is enabled, the primitiveFragmentShadingRate
feature must not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04480",
"text": " If the shadingRateImage
feature is enabled, the attachmentFragmentShadingRate
feature must not be enabled"
}
],
"(VK_KHR_fragment_shading_rate,VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04481",
"text": " If the fragmentDensityMap
feature is enabled, the pipelineFragmentShadingRate
feature must not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04482",
"text": " If the fragmentDensityMap
feature is enabled, the primitiveFragmentShadingRate
feature must not be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04483",
"text": " If the fragmentDensityMap
feature is enabled, the attachmentFragmentShadingRate
feature must not be enabled"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-VkDeviceCreateInfo-None-04896",
"text": " If sparseImageInt64Atomics
is enabled, shaderImageInt64Atomics
must be enabled"
}
],
"(VK_EXT_shader_atomic_float)": [
{
"vuid": "VUID-VkDeviceCreateInfo-None-04897",
"text": " If sparseImageFloat32Atomics
is enabled, shaderImageFloat32Atomics
must be enabled"
},
{
"vuid": "VUID-VkDeviceCreateInfo-None-04898",
"text": " If sparseImageFloat32AtomicAdd
is enabled, shaderImageFloat32AtomicAdd
must be enabled"
}
],
"(VK_EXT_shader_atomic_float2)": [
{
"vuid": "VUID-VkDeviceCreateInfo-sparseImageFloat32AtomicMinMax-04975",
"text": " If sparseImageFloat32AtomicMinMax
is enabled, shaderImageFloat32AtomicMinMax
must be enabled"
}
],
"core": [
{
"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 VkDeviceDeviceMemoryReportCreateInfoEXT, VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfo, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice4444FormatsFeaturesEXT, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceAccelerationStructureFeaturesKHR, VkPhysicalDeviceAddressBindingReportFeaturesEXT, VkPhysicalDeviceAmigoProfilingFeaturesSEC, VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBorderColorSwizzleFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceColorWriteEnableFeaturesEXT, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, VkPhysicalDeviceDepthClipControlFeaturesEXT, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDeviceMemoryReportFeaturesEXT, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceDynamicRenderingFeatures, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceExtendedDynamicState2FeaturesEXT, VkPhysicalDeviceExtendedDynamicState3FeaturesEXT, VkPhysicalDeviceExtendedDynamicStateFeaturesEXT, VkPhysicalDeviceExternalMemoryRDMAFeaturesNV, VkPhysicalDeviceFaultFeaturesEXT, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMap2FeaturesEXT, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM, VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV, VkPhysicalDeviceFragmentShadingRateFeaturesKHR, VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR, VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImage2DViewOf3DFeaturesEXT, VkPhysicalDeviceImageCompressionControlFeaturesEXT, VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT, VkPhysicalDeviceImageProcessingFeaturesQCOM, VkPhysicalDeviceImageRobustnessFeatures, VkPhysicalDeviceImageViewMinLodFeaturesEXT, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInheritedViewportScissorFeaturesNV, VkPhysicalDeviceInlineUniformBlockFeatures, VkPhysicalDeviceInvocationMaskFeaturesHUAWEI, VkPhysicalDeviceLegacyDitheringFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceLinearColorAttachmentFeaturesNV, VkPhysicalDeviceMaintenance4Features, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiDrawFeaturesEXT, VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT, VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT, VkPhysicalDeviceOpacityMicromapFeaturesEXT, VkPhysicalDeviceOpticalFlowFeaturesNV, VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePipelinePropertiesFeaturesEXT, VkPhysicalDevicePipelineProtectedAccessFeaturesEXT, VkPhysicalDevicePipelineRobustnessFeaturesEXT, VkPhysicalDevicePortabilitySubsetFeaturesKHR, VkPhysicalDevicePresentBarrierFeaturesNV, VkPhysicalDevicePresentIdFeaturesKHR, VkPhysicalDevicePresentWaitFeaturesKHR, VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT, VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT, VkPhysicalDevicePrivateDataFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceProvokingVertexFeaturesEXT, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT, VkPhysicalDeviceRayQueryFeaturesKHR, VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR, VkPhysicalDeviceRayTracingMotionBlurFeaturesNV, VkPhysicalDeviceRayTracingPipelineFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT, VkPhysicalDeviceShaderAtomicFloatFeaturesEXT, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM, VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerDotProductFeatures, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR, VkPhysicalDeviceShaderTerminateInvocationFeatures, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeatures, VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT, VkPhysicalDeviceSubpassShadingFeaturesHUAWEI, VkPhysicalDeviceSynchronization2Features, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeatures, VkPhysicalDeviceTilePropertiesFeaturesQCOM, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkan13Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR, VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT, or VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures"
},
{
"vuid": "VUID-VkDeviceCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkDeviceDeviceMemoryReportCreateInfoEXT or VkDevicePrivateDataCreateInfo"
},
{
"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
"
}
]
},
"VkDeviceGroupDeviceCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
"text": " Each element of pPhysicalDevices
must be unique"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
"text": " All elements of pPhysicalDevices
must be in the same device group as enumerated by vkEnumeratePhysicalDeviceGroups"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
"text": " If physicalDeviceCount
is not 0
, the physicalDevice
parameter of vkCreateDevice must be an element of pPhysicalDevices
"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO
"
},
{
"vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
"text": " If physicalDeviceCount
is not 0
, pPhysicalDevices
must be a valid pointer to an array of physicalDeviceCount
valid VkPhysicalDevice handles"
}
]
},
"VkDeviceMemoryOverallocationCreateInfoAMD": {
"(VK_AMD_memory_overallocation_behavior)": [
{
"vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD
"
},
{
"vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
"text": " overallocationBehavior
must be a valid VkMemoryOverallocationBehaviorAMD value"
}
]
},
"VkDeviceDiagnosticsConfigCreateInfoNV": {
"(VK_NV_device_diagnostics_config)": [
{
"vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkDeviceDiagnosticsConfigFlagBitsNV values"
}
]
},
"VkDeviceDeviceMemoryReportCreateInfoEXT": {
"(VK_EXT_device_memory_report)": [
{
"vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pfnUserCallback-parameter",
"text": " pfnUserCallback
must be a valid PFN_vkDeviceMemoryReportCallbackEXT value"
},
{
"vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter",
"text": " pUserData
must be a pointer value"
}
]
},
"VkDeviceMemoryReportCallbackDataEXT": {
"(VK_EXT_device_memory_report)": [
{
"vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT
"
},
{
"vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkDevicePrivateDataCreateInfo": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-VkDevicePrivateDataCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO
"
}
]
},
"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 VkDeviceQueueGlobalPriorityCreateInfoKHR"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkDeviceQueueCreateInfo-flags-02861",
"text": " If the protectedMemory
feature is not enabled, the VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
bit of flags
must not be set"
},
{
"vuid": "VUID-VkDeviceQueueCreateInfo-flags-06449",
"text": " If flags
includes VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
, queueFamilyIndex
must be the index of a queue family that includes the VK_QUEUE_PROTECTED_BIT
capability"
}
]
},
"VkDeviceQueueGlobalPriorityCreateInfoKHR": {
"(VK_EXT_global_priority,VK_KHR_global_priority)": [
{
"vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoKHR-globalPriority-parameter",
"text": " globalPriority
must be a valid VkQueueGlobalPriorityKHR 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 value of VkDeviceQueueCreateInfo::queueCount
for the queue family indicated by queueFamilyIndex
when device
was created"
},
{
"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-flags-06225",
"text": " flags
must be equal to VkDeviceQueueCreateInfo::flags
for a VkDeviceQueueCreateInfo structure for the queue family indicated by queueFamilyIndex
when device
was created"
},
{
"vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
"text": " queueIndex
must be less than VkDeviceQueueCreateInfo::queueCount
for the corresponding queue family and flags indicated by queueFamilyIndex
and flags
when device
was created"
},
{
"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"
}
]
},
"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": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkCommandPoolCreateInfo-flags-02860",
"text": " If the protectedMemory
feature is not enabled, the VK_COMMAND_POOL_CREATE_PROTECTED_BIT
bit of flags
must not be set"
}
],
"core": [
{
"vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
"
},
{
"vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkCommandPoolCreateFlagBits values"
}
]
},
"vkTrimCommandPool": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkTrimCommandPool-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool handle"
},
{
"vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-vkTrimCommandPool-commandPool-parent",
"text": " commandPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkResetCommandPool": {
"core": [
{
"vuid": "VUID-vkResetCommandPool-commandPool-00040",
"text": " All VkCommandBuffer
objects allocated from commandPool
must not be in the pending state"
},
{
"vuid": "VUID-vkResetCommandPool-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkResetCommandPool-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool handle"
},
{
"vuid": "VUID-vkResetCommandPool-flags-parameter",
"text": " flags
must be a valid combination of VkCommandPoolResetFlagBits values"
},
{
"vuid": "VUID-vkResetCommandPool-commandPool-parent",
"text": " commandPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyCommandPool": {
"core": [
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
"text": " All VkCommandBuffer
objects allocated from commandPool
must not be in the pending state"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
"text": " If VkAllocationCallbacks
were provided when commandPool
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
"text": " If no VkAllocationCallbacks
were provided when commandPool
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyCommandPool-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
"text": " If commandPool
is not VK_NULL_HANDLE, commandPool
must be a valid VkCommandPool handle"
},
{
"vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
"text": " If commandPool
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkAllocateCommandBuffers": {
"core": [
{
"vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
"text": " pAllocateInfo
must be a valid pointer to a valid VkCommandBufferAllocateInfo structure"
},
{
"vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
"text": " pCommandBuffers
must be a valid pointer to an array of pAllocateInfo->commandBufferCount
VkCommandBuffer handles"
},
{
"vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength",
"text": " pAllocateInfo->commandBufferCount
must be greater than 0
"
}
]
},
"VkCommandBufferAllocateInfo": {
"core": [
{
"vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool handle"
},
{
"vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
"text": " level
must be a valid VkCommandBufferLevel value"
}
]
},
"vkResetCommandBuffer": {
"core": [
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
"text": " commandBuffer
must not be in the pending state"
},
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
"text": " commandBuffer
must have been allocated from a pool that was created with the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
"
},
{
"vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkResetCommandBuffer-flags-parameter",
"text": " flags
must be a valid combination of VkCommandBufferResetFlagBits values"
}
]
},
"vkFreeCommandBuffers": {
"core": [
{
"vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
"text": " All elements of pCommandBuffers
must not be in the pending state"
},
{
"vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
"text": " pCommandBuffers
must be a valid pointer to an array of commandBufferCount
VkCommandBuffer
handles, each element of which must either be a valid handle or NULL
"
},
{
"vuid": "VUID-vkFreeCommandBuffers-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
"text": " commandPool
must be a valid VkCommandPool handle"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
"text": " commandBufferCount
must be greater than 0
"
},
{
"vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
"text": " commandPool
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
"text": " Each element of pCommandBuffers
that is a valid handle must have been created, allocated, or retrieved from commandPool
"
}
]
},
"vkBeginCommandBuffer": {
"core": [
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
"text": " commandBuffer
must not be in the recording or pending state"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
"text": " If commandBuffer
was allocated from a VkCommandPool which did not have the VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
flag set, commandBuffer
must be in the initial state"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
"text": " If commandBuffer
is a secondary command buffer, the pInheritanceInfo
member of pBeginInfo
must be a valid VkCommandBufferInheritanceInfo
structure"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
"text": " If commandBuffer
is a secondary command buffer and either the occlusionQueryEnable
member of the pInheritanceInfo
member of pBeginInfo
is VK_FALSE
, or the occlusionQueryPrecise
feature is not enabled, then pBeginInfo->pInheritanceInfo->queryFlags
must not contain VK_QUERY_CONTROL_PRECISE_BIT
"
},
{
"vuid": "VUID-vkBeginCommandBuffer-commandBuffer-02840",
"text": " If commandBuffer
is a primary command buffer, then pBeginInfo->flags
must not set both the VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
and the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flags"
},
{
"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": {
"!(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"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
"
}
],
"core": [
{
"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-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
"text": " flags
must be a valid combination of VkCommandBufferUsageFlagBits values"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-06000",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
and the renderPass
member of pInheritanceInfo
is not VK_NULL_HANDLE, renderPass
must be a valid VkRenderPass
"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-06001",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
and the renderPass
member of pInheritanceInfo
is not VK_NULL_HANDLE, the subpass
member of pInheritanceInfo
must be a valid subpass index within the renderPass
member of pInheritanceInfo
"
},
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-06002",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
and the renderPass
member of pInheritanceInfo
is VK_NULL_HANDLE, the pNext
chain of pInheritanceInfo
must include a VkCommandBufferInheritanceRenderingInfo structure"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkCommandBufferBeginInfo-flags-06003",
"text": " If flags
contains VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
, the renderPass
member of pInheritanceInfo
is VK_NULL_HANDLE, and the pNext
chain of pInheritanceInfo
includes a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, the colorAttachmentCount
member of that structure must be equal to the value of VkCommandBufferInheritanceRenderingInfo::colorAttachmentCount
"
}
]
},
"VkCommandBufferInheritanceInfo": {
"core": [
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
"text": " If the inheritedQueries
feature is not enabled, occlusionQueryEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
"text": " If the inheritedQueries
feature is enabled, queryFlags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788",
"text": " If the inheritedQueries
feature is not enabled, queryFlags
must be 0
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789",
"text": " If the pipelineStatisticsQuery
feature is enabled, pipelineStatistics
must be a valid combination of VkQueryPipelineStatisticFlagBits values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
"text": " If the pipelineStatisticsQuery
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": " 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 VkAttachmentSampleCountInfoAMD, VkCommandBufferInheritanceConditionalRenderingInfoEXT, VkCommandBufferInheritanceRenderPassTransformInfoQCOM, VkCommandBufferInheritanceRenderingInfo, VkCommandBufferInheritanceViewportScissorInfoNV, or VkMultiviewPerViewAttributesInfoNVX"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
"text": " Both of framebuffer
, and renderPass
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
"text": " If the inheritedConditionalRendering
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
"
}
]
},
"VkCommandBufferInheritanceRenderPassTransformInfoQCOM": {
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864",
"text": " transform
must be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
, VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
, VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
, or VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM
"
}
]
},
"VkCommandBufferInheritanceViewportScissorInfoNV": {
"(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04782",
"text": " If the inheritedViewportScissor2D
feature is not enabled, viewportScissor2D
must be VK_FALSE
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04783",
"text": " If the multiViewport
feature is not enabled and viewportScissor2D
is VK_TRUE
, then viewportDepthCount
must be 1
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04784",
"text": " If viewportScissor2D
is VK_TRUE
, then viewportDepthCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04785",
"text": " If viewportScissor2D
is VK_TRUE
, then pViewportDepths
must be a valid pointer to an array of viewportDepthCount
valid VkViewport
structures, except any requirements on x
, y
, width
, and height
do not apply"
},
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-viewportScissor2D-04786",
"text": " If viewportScissor2D
is VK_TRUE
, then the command buffer must be recorded with the VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceViewportScissorInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV
"
}
]
},
"VkCommandBufferInheritanceRenderingInfo": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-colorAttachmentCount-06004",
"text": " If colorAttachmentCount
is not 0
, rasterizationSamples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-variableMultisampleRate-06005",
"text": " If the variableMultisampleRate
feature is not enabled, rasterizationSamples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-06006",
"text": " If any element of pColorAttachmentFormats
is not VK_FORMAT_UNDEFINED
, it must be a format with potential format features that include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06540",
"text": " If depthAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format that includes a depth aspect"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06007",
"text": " If depthAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format with potential format features that include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06541",
"text": " If stencilAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format that includes a stencil aspect"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-06199",
"text": " If stencilAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format with potential format features that include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-06200",
"text": " If depthAttachmentFormat
is not VK_FORMAT_UNDEFINED
and stencilAttachmentFormat
is not VK_FORMAT_UNDEFINED
, depthAttachmentFormat
must equal stencilAttachmentFormat
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-multiview-06008",
"text": " If the multiview
feature is not enabled, viewMask
must be 0
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO
"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-flags-parameter",
"text": " flags
must be a valid combination of VkRenderingFlagBits values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-pColorAttachmentFormats-parameter",
"text": " If colorAttachmentCount
is not 0
, pColorAttachmentFormats
must be a valid pointer to an array of colorAttachmentCount
valid VkFormat values"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-depthAttachmentFormat-parameter",
"text": " depthAttachmentFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-stencilAttachmentFormat-parameter",
"text": " stencilAttachmentFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-rasterizationSamples-parameter",
"text": " If rasterizationSamples
is not 0
, rasterizationSamples
must be a valid VkSampleCountFlagBits value"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfoKHR-pColorAttachmentFormats-06492",
"text": " When rendering to a Linear Color attachment, if any element of pColorAttachmentFormats
is not VK_FORMAT_UNDEFINED
, it must be a format with potential format features that include VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkCommandBufferInheritanceRenderingInfo-viewMask-06009",
"text": " The index of the most significant bit in viewMask
must be less than maxMultiviewViewCount
"
}
]
},
"VkAttachmentSampleCountInfoAMD": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkAttachmentSampleCountInfoAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD
"
}
]
},
"vkEndCommandBuffer": {
"core": [
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
"text": " If commandBuffer
is a primary command buffer, there must not be an active render pass instance"
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
"text": " All queries made active during the recording of commandBuffer
must have been made inactive"
},
{
"vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkEndCommandBuffer-None-01978",
"text": " Conditional rendering must not be active"
}
],
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkEndCommandBuffer-None-06991",
"text": " There must be no video session object bound"
}
],
"(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"
}
]
},
"vkQueueSubmit2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkQueueSubmit2-fence-04894",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be unsignaled"
},
{
"vuid": "VUID-vkQueueSubmit2-fence-04895",
"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-vkQueueSubmit2-synchronization2-03866",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03867",
"text": " If a command recorded into the commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
referenced an VkEvent, that event must not be referenced by a command that has been submitted to another queue and is still in the pending state"
},
{
"vuid": "VUID-vkQueueSubmit2-semaphore-03868",
"text": " The semaphore
member of any binary semaphore element of the pSignalSemaphoreInfos
member of any element of pSubmits
must be unsignaled when the semaphore signal operation it defines is executed on the device"
},
{
"vuid": "VUID-vkQueueSubmit2-stageMask-03869",
"text": " The stageMask
member of any element of the pSignalSemaphoreInfos
member of any element of pSubmits
must only include pipeline stages that are supported by the queue family which queue
belongs to"
},
{
"vuid": "VUID-vkQueueSubmit2-stageMask-03870",
"text": " The stageMask
member of any element of the pWaitSemaphoreInfos
member of any element of pSubmits
must only include pipeline stages that are supported by the queue family which queue
belongs to"
},
{
"vuid": "VUID-vkQueueSubmit2-semaphore-03871",
"text": " When a semaphore wait operation for a binary semaphore is executed, as defined by the semaphore
member of any element of the pWaitSemaphoreInfos
member of any element of pSubmits
, there must be no other queues waiting on the same semaphore"
},
{
"vuid": "VUID-vkQueueSubmit2-semaphore-03872",
"text": " The semaphore
member of any element of the pWaitSemaphoreInfos
member of any element of pSubmits
must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03874",
"text": " The commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
must be in the pending or executable state"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03875",
"text": " If a command recorded into the commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
, it must not be in the pending state"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03876",
"text": " Any secondary command buffers recorded into the commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
must be in the pending or executable state"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03877",
"text": " If any secondary command buffers recorded into the commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
, it must not be in the pending state"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03878",
"text": " The commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
must have been allocated from a VkCommandPool
that was created for the same queue family queue
belongs to"
},
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03879",
"text": " If a command recorded into the commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
includes a Queue Family Transfer Acquire Operation, there must exist a previously submitted Queue Family Transfer Release Operation on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such acquire operations, and which happens before the acquire operation"
},
{
"vuid": "VUID-vkQueueSubmit2-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkQueueSubmit2-pSubmits-parameter",
"text": " If submitCount
is not 0
, pSubmits
must be a valid pointer to an array of submitCount
valid VkSubmitInfo2 structures"
},
{
"vuid": "VUID-vkQueueSubmit2-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-vkQueueSubmit2-commonparent",
"text": " Both of fence
, and queue
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueueSubmit2-semaphore-03873",
"text": " Any semaphore
member of any element of the pWaitSemaphoreInfos
member of any element of pSubmits
that was created with a VkSemaphoreTypeKHR of VK_SEMAPHORE_TYPE_BINARY_KHR
must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must have also been submitted for execution"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkQueueSubmit2-commandBuffer-03880",
"text": " If a command recorded into the commandBuffer
member of any element of the pCommandBufferInfos
member of any element of pSubmits
was a vkCmdBeginQuery whose queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the profiling lock must have been held continuously on the VkDevice
that queue
was retrieved from, throughout recording of those command buffers"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkQueueSubmit2-queue-06447",
"text": " If queue
was not created with VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
, the flags
member of any element of pSubmits
must not include VK_SUBMIT_PROTECTED_BIT_KHR
"
}
]
},
"VkSubmitInfo2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSubmitInfo2-semaphore-03881",
"text": " If the same semaphore is used as the semaphore
member of both an element of pSignalSemaphoreInfos
and pWaitSemaphoreInfos
, and that semaphore is a timeline semaphore, the value
member of the pSignalSemaphoreInfos
element must be greater than the value
member of the pWaitSemaphoreInfos
element"
},
{
"vuid": "VUID-VkSubmitInfo2-semaphore-03882",
"text": " If the semaphore
member of any element of pSignalSemaphoreInfos
is a timeline semaphore, the value
member of that element must have a value greater than the current value of the semaphore when the semaphore signal operation is executed"
},
{
"vuid": "VUID-VkSubmitInfo2-semaphore-03883",
"text": " If the semaphore
member of any element of pSignalSemaphoreInfos
is a timeline semaphore, the value
member of that element must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference
"
},
{
"vuid": "VUID-VkSubmitInfo2-semaphore-03884",
"text": " If the semaphore
member of any element of pWaitSemaphoreInfos
is a timeline semaphore, the value
member of that element must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkSubmitInfo2-flags-03886",
"text": " If flags
includes VK_SUBMIT_PROTECTED_BIT
, all elements of pCommandBuffers
must be protected command buffers"
},
{
"vuid": "VUID-VkSubmitInfo2-flags-03887",
"text": " If flags
does not include VK_SUBMIT_PROTECTED_BIT
, each element of pCommandBuffers
must not be a protected command buffer"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06192",
"text": " If any commandBuffer
member of an element of pCommandBufferInfos
contains any resumed render pass instances, they must be suspended by a render pass instance earlier in submission order within pCommandBufferInfos
"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06010",
"text": " If any commandBuffer
member of an element of pCommandBufferInfos
contains any suspended render pass instances, they must be resumed by a render pass instance later in submission order within pCommandBufferInfos
"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06011",
"text": " If any commandBuffer
member of an element of pCommandBufferInfos
contains any suspended render pass instances, there must be no action or synchronization commands between that render pass instance and the render pass instance that resumes it"
},
{
"vuid": "VUID-VkSubmitInfo2KHR-commandBuffer-06012",
"text": " If any commandBuffer
member of an element of pCommandBufferInfos
contains any suspended render pass instances, there must be no render pass instances between that render pass instance and the render pass instance that resumes it"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkSubmitInfo2KHR-variableSampleLocations-06013",
"text": " If the variableSampleLocations
limit is not supported, and any commandBuffer
member of an element of pCommandBufferInfos
contains any suspended render pass instances, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, must use the same sample locations"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubmitInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBMIT_INFO_2
"
},
{
"vuid": "VUID-VkSubmitInfo2-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 VkPerformanceQuerySubmitInfoKHR, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV"
},
{
"vuid": "VUID-VkSubmitInfo2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSubmitInfo2-flags-parameter",
"text": " flags
must be a valid combination of VkSubmitFlagBits values"
},
{
"vuid": "VUID-VkSubmitInfo2-pWaitSemaphoreInfos-parameter",
"text": " If waitSemaphoreInfoCount
is not 0
, pWaitSemaphoreInfos
must be a valid pointer to an array of waitSemaphoreInfoCount
valid VkSemaphoreSubmitInfo structures"
},
{
"vuid": "VUID-VkSubmitInfo2-pCommandBufferInfos-parameter",
"text": " If commandBufferInfoCount
is not 0
, pCommandBufferInfos
must be a valid pointer to an array of commandBufferInfoCount
valid VkCommandBufferSubmitInfo structures"
},
{
"vuid": "VUID-VkSubmitInfo2-pSignalSemaphoreInfos-parameter",
"text": " If signalSemaphoreInfoCount
is not 0
, pSignalSemaphoreInfos
must be a valid pointer to an array of signalSemaphoreInfoCount
valid VkSemaphoreSubmitInfo structures"
}
]
},
"VkSemaphoreSubmitInfo": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-device-03888",
"text": " If the device
that semaphore
was created on is not a device group, deviceIndex
must be 0
"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO
"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-parameter",
"text": " stageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-stageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_device_group_creation,VK_VERSION_1_1)": [
{
"vuid": "VUID-VkSemaphoreSubmitInfo-device-03889",
"text": " If the device
that semaphore
was created on is a device group, deviceIndex
must be a valid device index"
}
]
},
"VkCommandBufferSubmitInfo": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkCommandBufferSubmitInfo-commandBuffer-03890",
"text": " commandBuffer
must not have been allocated with VK_COMMAND_BUFFER_LEVEL_SECONDARY
"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO
"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCommandBufferSubmitInfo-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_device_group_creation,VK_VERSION_1_1)": [
{
"vuid": "VUID-VkCommandBufferSubmitInfo-deviceMask-03891",
"text": " If deviceMask
is not 0
, it must be a valid device mask"
}
]
},
"vkQueueSubmit": {
"core": [
{
"vuid": "VUID-vkQueueSubmit-fence-00063",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be unsignaled"
},
{
"vuid": "VUID-vkQueueSubmit-fence-00064",
"text": " If fence
is not VK_NULL_HANDLE, fence
must not be associated with any other queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
"text": " Any calls to vkCmdSetEvent, vkCmdResetEvent or vkCmdWaitEvents that have been recorded into any of the command buffer elements of the pCommandBuffers
member of any element of pSubmits
, must not reference any VkEvent that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the pending state"
},
{
"vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
"text": " Any stage flag included in any element of the pWaitDstStageMask
member of any element of pSubmits
must be a pipeline stage supported by one of the capabilities of queue
, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
"text": " Each binary semaphore 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 wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores
member of any element of pSubmits
executes on queue
, there must be no other queues waiting on the same semaphore"
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
"text": " Each element of the pCommandBuffers
member of each element of pSubmits
must be in the pending or executable state"
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
"text": " If any element of the pCommandBuffers
member of any element of pSubmits
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
, it must not be in the pending state"
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
"text": " Any secondary command buffers recorded into any element of the pCommandBuffers
member of any element of pSubmits
must be in the pending or executable state"
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
"text": " If any secondary command buffers recorded into any element of the pCommandBuffers
member of any element of pSubmits
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
, it must not be in the pending state"
},
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
"text": " Each element of the pCommandBuffers
member of each element of pSubmits
must have been allocated from a VkCommandPool
that was created for the same queue family queue
belongs to"
},
{
"vuid": "VUID-vkQueueSubmit-pSubmits-02207",
"text": " If any element of pSubmits->pCommandBuffers
includes a Queue Family Transfer Acquire Operation, there must exist a previously submitted Queue Family Transfer Release Operation on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such acquire operations, and which happens-before the acquire operation"
},
{
"vuid": "VUID-vkQueueSubmit-pSubmits-02808",
"text": " Any resource created with VK_SHARING_MODE_EXCLUSIVE
that is read by an operation specified by pSubmits
must not be owned by any queue family other than the one which queue
belongs to, at the time it is executed"
},
{
"vuid": "VUID-vkQueueSubmit-pSubmits-04626",
"text": " Any resource created with VK_SHARING_MODE_CONCURRENT
that is accessed by an operation specified by pSubmits
must have included the queue family of queue
at resource creation time"
},
{
"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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"!(VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
"text": " All elements of the pWaitSemaphores
member of all elements of pSubmits
must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution"
}
],
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueueSubmit-pWaitSemaphores-03238",
"text": " All elements of the pWaitSemaphores
member of all elements of pSubmits
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must have also been submitted for execution"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkQueueSubmit-pCommandBuffers-03220",
"text": " If a command recorded into any element of pCommandBuffers
was a vkCmdBeginQuery whose queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the profiling lock must have been held continuously on the VkDevice
that queue
was retrieved from, throughout recording of those command buffers"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkQueueSubmit-queue-06448",
"text": " If queue
was not created with VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT
, there must be no element of pSubmits
that includes an VkProtectedSubmitInfo structure in its pNext
chain with protectedSubmit
equal to VK_TRUE
"
}
]
},
"VkSubmitInfo": {
"core": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"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-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 VkAmigoProfilingSubmitInfoSEC, VkD3D12FenceSubmitInfoKHR, VkDeviceGroupSubmitInfo, VkPerformanceQuerySubmitInfoKHR, VkProtectedSubmitInfo, VkTimelineSemaphoreSubmitInfo, VkWin32KeyedMutexAcquireReleaseInfoKHR, or VkWin32KeyedMutexAcquireReleaseInfoNV"
},
{
"vuid": "VUID-VkSubmitInfo-sType-unique",
"text": " The sType
value of each struct 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-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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubmitInfo-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubmitInfo-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:pWaitDstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:pWaitDstStageMask must not be 0
"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-04996",
"text": " pname:pWaitDstStageMask must not be 0
"
}
],
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03239",
"text": " If any element of pWaitSemaphores
or pSignalSemaphores
was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
, then the pNext
chain must include a VkTimelineSemaphoreSubmitInfo structure"
},
{
"vuid": "VUID-VkSubmitInfo-pNext-03240",
"text": " If the pNext
chain of this structure includes a VkTimelineSemaphoreSubmitInfo structure and any element of pWaitSemaphores
was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
, then its waitSemaphoreValueCount
member must equal waitSemaphoreCount
"
},
{
"vuid": "VUID-VkSubmitInfo-pNext-03241",
"text": " If the pNext
chain of this structure includes a VkTimelineSemaphoreSubmitInfo structure and any element of pSignalSemaphores
was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
, then its signalSemaphoreValueCount
member must equal signalSemaphoreCount
"
},
{
"vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03242",
"text": " For each element of pSignalSemaphores
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
the corresponding element of VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues
must have a value greater than the current value of the semaphore when the semaphore signal operation is executed"
},
{
"vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03243",
"text": " For each element of pWaitSemaphores
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
the corresponding element of VkTimelineSemaphoreSubmitInfo::pWaitSemaphoreValues
must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference
"
},
{
"vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03244",
"text": " For each element of pSignalSemaphores
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
the corresponding element of VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues
must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkSubmitInfo-pNext-04120",
"text": " If the pNext
chain of this structure does not include a VkProtectedSubmitInfo
structure with protectedSubmit
set to VK_TRUE
, then each element of the pCommandBuffers
array must be an unprotected command buffer"
},
{
"vuid": "VUID-VkSubmitInfo-pNext-04148",
"text": " If the pNext
chain of this structure includes a VkProtectedSubmitInfo
structure with protectedSubmit
set to VK_TRUE
, then each element of the pCommandBuffers
array must be a protected command buffer"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkSubmitInfo-pCommandBuffers-06193",
"text": " If pCommandBuffers
contains any resumed render pass instances, they must be suspended by a render pass instance earlier in submission order within pCommandBuffers
"
},
{
"vuid": "VUID-VkSubmitInfo-pCommandBuffers-06014",
"text": " If pCommandBuffers
contains any suspended render pass instances, they must be resumed by a render pass instance later in submission order within pCommandBuffers
"
},
{
"vuid": "VUID-VkSubmitInfo-pCommandBuffers-06015",
"text": " If pCommandBuffers
contains any suspended render pass instances, there must be no action or synchronization commands executed in a primary or secondary command buffer between that render pass instance and the render pass instance that resumes it"
},
{
"vuid": "VUID-VkSubmitInfo-pCommandBuffers-06016",
"text": " If pCommandBuffers
contains any suspended render pass instances, there must be no render pass instances between that render pass instance and the render pass instance that resumes it"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkSubmitInfo-variableSampleLocations-06017",
"text": " If the variableSampleLocations
limit is not supported, and any element of pCommandBuffers
contains any suspended render pass instances, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, must use the same sample locations"
}
]
},
"VkTimelineSemaphoreSubmitInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkTimelineSemaphoreSubmitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO
"
},
{
"vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter",
"text": " If waitSemaphoreValueCount
is not 0
, and pWaitSemaphoreValues
is not NULL
, pWaitSemaphoreValues
must be a valid pointer to an array of waitSemaphoreValueCount
uint64_t
values"
},
{
"vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter",
"text": " If signalSemaphoreValueCount
is not 0
, and pSignalSemaphoreValues
is not NULL
, pSignalSemaphoreValues
must be a valid pointer to an array of signalSemaphoreValueCount
uint64_t
values"
}
]
},
"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 of non-ignored parameters 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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkProtectedSubmitInfo": {
"(VK_VERSION_1_1)": [
{
"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"
}
]
},
"VkPerformanceQuerySubmitInfoKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-counterPassIndex-03221",
"text": " counterPassIndex
must be less than the number of counter passes required by any queries within the batch. The required number of counter passes for a performance query is obtained by calling vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
},
{
"vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR
"
}
]
},
"vkCmdExecuteCommands": {
"core": [
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
"text": " Each element of pCommandBuffers
must have been allocated with a level
of VK_COMMAND_BUFFER_LEVEL_SECONDARY
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
"text": " Each element of pCommandBuffers
must be in the pending or executable state"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, it must not be in the pending state"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, it must not have already been recorded to commandBuffer
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
"text": " If any element of pCommandBuffers
was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
flag, it must not appear more than once in pCommandBuffers
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
"text": " Each element of pCommandBuffers
must have been allocated from a VkCommandPool
that was created for the same queue family as the VkCommandPool
from which commandBuffer
was allocated"
},
{
"vuid": "VUID-vkCmdExecuteCommands-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-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-contents-06018",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRenderPass, its contents
parameter must have been set to VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06019",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRenderPass, 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-pBeginInfo-06020",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRenderPass, the render passes specified in the pBeginInfo->pInheritanceInfo->renderPass
members of the vkBeginCommandBuffer commands used to begin recording each element of pCommandBuffers
must be compatible with the current render pass"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-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 inheritedQueries
feature is not enabled, commandBuffer
must not have any queries active"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
"text": " If commandBuffer
has a VK_QUERY_TYPE_OCCLUSION
query active, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::occlusionQueryEnable
set to VK_TRUE
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
"text": " If commandBuffer
has a VK_QUERY_TYPE_OCCLUSION
query active, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::queryFlags
having all bits set that are set for the query"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
"text": " If commandBuffer
has a VK_QUERY_TYPE_PIPELINE_STATISTICS
query active, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::pipelineStatistics
having all bits set that are set in the VkQueryPool
the query uses"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
"text": " Each element of pCommandBuffers
must not begin any query types that are active in commandBuffer
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-07594",
"text": " commandBuffer
must not have any queries other than VK_QUERY_TYPE_OCCLUSION
and VK_QUERY_TYPE_PIPELINE_STATISTICS
active"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-06533",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance and any recorded command in commandBuffer
in the current subpass will write to an image subresource as an attachment, commands recorded in elements of pCommandBuffers
must not read from the memory backing that image subresource in any other way"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-06534",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance and any recorded command in commandBuffer
in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, commands recorded in elements of pCommandBuffers
must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06535",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance and any recorded command in a given element of pCommandBuffers
will write to an image subresource as an attachment, commands recorded in elements of pCommandBuffers
at a higher index must not read from the memory backing that image subresource in any other way"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06536",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance and any recorded command in a given element of pCommandBuffers
will read from an image subresource used as an attachment in any way other than as an attachment, commands recorded in elements of pCommandBuffers
at a higher index must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
"text": " pCommandBuffers
must be a valid pointer to an array of commandBufferCount
valid VkCommandBuffer handles"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdExecuteCommands-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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_3,VK_KHR_dynamic_rendering)": [
{
"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-00097",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceInfo
::subpass
set to the index of the subpass which the given command buffer will be executed in"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance, the render passes specified in the pBeginInfo->pInheritanceInfo->renderPass
members of the vkBeginCommandBuffer commands used to begin recording each element of pCommandBuffers
must be compatible with the current render pass"
}
],
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-02865",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance that included VkRenderPassTransformBeginInfoQCOM in the pNext
chain of VkRenderPassBeginInfo, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceRenderPassTransformInfoQCOM in the pNext
chain of VkCommandBufferBeginInfo"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-02866",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance that included VkRenderPassTransformBeginInfoQCOM in the pNext
chain of VkRenderPassBeginInfo, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceRenderPassTransformInfoQCOM::transform
identical to VkRenderPassTransformBeginInfoQCOM::transform
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-02867",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance that included VkRenderPassTransformBeginInfoQCOM in the pNext
chain of VkRenderPassBeginInfo, then each element of pCommandBuffers
must have been recorded with VkCommandBufferInheritanceRenderPassTransformInfoQCOM::renderArea
identical to VkRenderPassBeginInfo::renderArea
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, each element of pCommandBuffers
must be a protected command buffer"
},
{
"vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, each element of pCommandBuffers
must be an unprotected command buffer"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdExecuteCommands-None-02286",
"text": " This command must not be recorded when transform feedback is active"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06021",
"text": " If pCommandBuffers
contains any suspended render pass instances, there must be no action or synchronization commands between that render pass instance and any render pass instance that resumes it"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-06022",
"text": " If pCommandBuffers
contains any suspended render pass instances, there must be no render pass instances between that render pass instance and any render pass instance that resumes it"
},
{
"vuid": "VUID-vkCmdExecuteCommands-flags-06024",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, its VkRenderingInfo::flags
parameter must have included VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pBeginInfo-06025",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, the render passes specified in the pBeginInfo->pInheritanceInfo->renderPass
members of the vkBeginCommandBuffer commands used to begin recording each element of pCommandBuffers
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdExecuteCommands-flags-06026",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, the flags
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the VkRenderingInfo::flags
parameter to vkCmdBeginRendering, excluding VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-colorAttachmentCount-06027",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, the colorAttachmentCount
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the VkRenderingInfo::colorAttachmentCount
parameter to vkCmdBeginRendering"
},
{
"vuid": "VUID-vkCmdExecuteCommands-imageView-06028",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, if the imageView
member of an element of the VkRenderingInfo::pColorAttachments
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the corresponding element of the pColorAttachmentFormats
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the format used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pDepthAttachment-06029",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, if the VkRenderingInfo::pDepthAttachment->imageView
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of the depthAttachmentFormat
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the format used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pStencilAttachment-06030",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, if the VkRenderingInfo::pStencilAttachment->imageView
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of the stencilAttachmentFormat
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the format used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pDepthAttachment-06774",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the VkRenderingInfo::pDepthAttachment->imageView
parameter to vkCmdBeginRendering was VK_NULL_HANDLE, the value of the depthAttachmentFormat
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be VK_FORMAT_UNDEFINED
"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pStencilAttachment-06775",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the VkRenderingInfo::pStencilAttachment->imageView
parameter to vkCmdBeginRendering was VK_NULL_HANDLE, the value of the stencilAttachmentFormat
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be VK_FORMAT_UNDEFINED
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdExecuteCommands-variableSampleLocations-06023",
"text": " If the variableSampleLocations
limit is not supported, and any element of pCommandBuffers
contains any suspended render pass instances, where a graphics pipeline has been bound, any pipelines bound in the render pass instance that resumes it, or any subsequent render pass instances that resume from that one and so on, must use the same sample locations"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_multiview,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdExecuteCommands-viewMask-06031",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering, the viewMask
member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the VkRenderingInfo::viewMask
parameter to vkCmdBeginRendering"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06032",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the pNext
chain of VkCommandBufferInheritanceInfo includes a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the imageView
member of an element of the VkRenderingInfo::pColorAttachments
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the corresponding element of the pColorAttachmentSamples
member of the VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06033",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the pNext
chain of VkCommandBufferInheritanceInfo includes a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the VkRenderingInfo::pDepthAttachment->imageView
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of the VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06034",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the pNext
chain of VkCommandBufferInheritanceInfo includes a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the VkRenderingInfo::pStencilAttachment->imageView
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of the VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure included in the pNext
chain of VkCommandBufferBeginInfo::pInheritanceInfo
used to begin recording each element of pCommandBuffers
must be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06035",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the pNext
chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the imageView
member of an element of the VkRenderingInfo::pColorAttachments
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples
must be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06036",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the pNext
chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the VkRenderingInfo::pDepthAttachment->imageView
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples
must be equal to the sample count used to create that image view"
},
{
"vuid": "VUID-vkCmdExecuteCommands-pNext-06037",
"text": " If vkCmdExecuteCommands
is being called within a render pass instance begun with vkCmdBeginRendering and the pNext
chain of VkCommandBufferInheritanceInfo does not include a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, if the VkRenderingInfo::pStencilAttachment->imageView
parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the value of VkCommandBufferInheritanceRenderingInfo::rasterizationSamples
must be equal to the sample count used to create that image view"
}
]
},
"VkDeviceGroupCommandBufferBeginInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
"text": " deviceMask
must be a valid device mask value"
},
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO
"
}
]
},
"vkCmdSetDeviceMask": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
"text": " deviceMask
must be a valid device mask value"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
"text": " deviceMask
must not include any set bits that were not in the VkDeviceGroupCommandBufferBeginInfo::deviceMask
value when the command buffer began recording"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
"text": " If vkCmdSetDeviceMask
is called inside a render pass instance, deviceMask
must not include any set bits that were not in the VkDeviceGroupRenderPassBeginInfo::deviceMask
value when the render pass instance began recording"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
}
]
},
"vkCreateFence": {
"core": [
{
"vuid": "VUID-vkCreateFence-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkFenceCreateInfo structure"
},
{
"vuid": "VUID-vkCreateFence-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateFence-pFence-parameter",
"text": " pFence
must be a valid pointer to a VkFence handle"
}
]
},
"VkFenceCreateInfo": {
"core": [
{
"vuid": "VUID-VkFenceCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
"
},
{
"vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkExportFenceCreateInfo or VkExportFenceWin32HandleInfoKHR"
},
{
"vuid": "VUID-VkFenceCreateInfo-sType-unique",
"text": " The sType
value of each struct 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
, a VkExportFenceWin32HandleInfoKHR
structure must not be included in the pNext
chain of VkFenceCreateInfo"
},
{
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"vkGetFenceWin32HandleKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
"text": " pGetWin32HandleInfo
must be a valid pointer to a valid VkFenceGetWin32HandleInfoKHR structure"
},
{
"vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
}
]
},
"VkFenceGetWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
"text": " handleType
must have been included in VkExportFenceCreateInfo::handleTypes
when the fence
’s current payload was created"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
"text": " If handleType
is defined as an NT handle, vkGetFenceWin32HandleKHR must be called no more than once for each valid unique combination of fence
and handleType
"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
"text": " fence
must not currently have its payload replaced by an imported payload as described below in Importing Fence Payloads unless that imported payload’s handle type was included in VkExternalFenceProperties::exportFromImportedHandleTypes
for handleType
"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
"text": " If handleType
refers to a handle type with copy payload transference semantics, fence
must be signaled, or have an associated fence signal operation pending execution"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
"text": " handleType
must be defined as an NT handle or a global share handle"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
"text": " fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"vkGetFenceFdKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-vkGetFenceFdKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
"text": " pGetFdInfo
must be a valid pointer to a valid VkFenceGetFdInfoKHR structure"
},
{
"vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
"text": " pFd
must be a valid pointer to an int
value"
}
]
},
"VkFenceGetFdInfoKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
"text": " handleType
must have been included in VkExportFenceCreateInfo::handleTypes
when fence
’s current payload was created"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
"text": " If handleType
refers to a handle type with copy payload transference semantics, fence
must be signaled, or have an associated fence signal operation pending execution"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
"text": " fence
must not currently have its payload replaced by an imported payload as described below in Importing Fence Payloads unless that imported payload’s handle type was included in VkExternalFenceProperties::exportFromImportedHandleTypes
for handleType
"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
"text": " handleType
must be defined as a POSIX file descriptor handle"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
"text": " fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"vkDestroyFence": {
"core": [
{
"vuid": "VUID-vkDestroyFence-fence-01120",
"text": " All queue submission commands that refer to fence
must have completed execution"
},
{
"vuid": "VUID-vkDestroyFence-fence-01121",
"text": " If VkAllocationCallbacks
were provided when fence
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyFence-fence-01122",
"text": " If no VkAllocationCallbacks
were provided when fence
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyFence-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyFence-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-vkDestroyFence-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyFence-fence-parent",
"text": " If fence
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetFenceStatus": {
"core": [
{
"vuid": "VUID-vkGetFenceStatus-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetFenceStatus-fence-parameter",
"text": " fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-vkGetFenceStatus-fence-parent",
"text": " fence
must have been created, allocated, or retrieved from device
"
}
]
},
"vkResetFences": {
"core": [
{
"vuid": "VUID-vkResetFences-pFences-01123",
"text": " Each element of pFences
must not be currently associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkResetFences-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkResetFences-pFences-parameter",
"text": " pFences
must be a valid pointer to an array of fenceCount
valid VkFence handles"
},
{
"vuid": "VUID-vkResetFences-fenceCount-arraylength",
"text": " fenceCount
must be greater than 0
"
},
{
"vuid": "VUID-vkResetFences-pFences-parent",
"text": " Each element of pFences
must have been created, allocated, or retrieved from device
"
}
]
},
"vkWaitForFences": {
"core": [
{
"vuid": "VUID-vkWaitForFences-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkWaitForFences-pFences-parameter",
"text": " pFences
must be a valid pointer to an array of fenceCount
valid VkFence handles"
},
{
"vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
"text": " fenceCount
must be greater than 0
"
},
{
"vuid": "VUID-vkWaitForFences-pFences-parent",
"text": " Each element of pFences
must have been created, allocated, or retrieved from device
"
}
]
},
"vkRegisterDeviceEventEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
"text": " pDeviceEventInfo
must be a valid pointer to a valid VkDeviceEventInfoEXT structure"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
"text": " pFence
must be a valid pointer to a VkFence handle"
}
]
},
"VkDeviceEventInfoEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT
"
},
{
"vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
"text": " deviceEvent
must be a valid VkDeviceEventTypeEXT value"
}
]
},
"vkRegisterDisplayEventEXT": {
"(VK_EXT_display_control)": [
{
"vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR handle"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
"text": " pDisplayEventInfo
must be a valid pointer to a valid VkDisplayEventInfoEXT structure"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
"text": " pFence
must be a valid pointer to a VkFence handle"
},
{
"vuid": "VUID-vkRegisterDisplayEventEXT-commonparent",
"text": " Both of device
, and display
must have been created, allocated, or retrieved from the same VkPhysicalDevice"
}
]
},
"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-fence-04448",
"text": " fence
must not be associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
"text": " pImportFenceWin32HandleInfo
must be a valid pointer to a valid VkImportFenceWin32HandleInfoKHR structure"
}
]
},
"VkImportFenceWin32HandleInfoKHR": {
"(VK_KHR_external_fence_win32)": [
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportFenceWin32HandleInfoKHR
table"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
"text": " If handleType
is not VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT
, name
must be NULL
"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
"text": " If handle
is NULL
, name
must name a valid synchronization primitive of the type specified by handleType
"
},
{
"vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
"text": " If 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"
}
]
},
"vkImportFenceFdKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-vkImportFenceFdKHR-fence-01463",
"text": " fence
must not be associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkImportFenceFdKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
"text": " pImportFenceFdInfo
must be a valid pointer to a valid VkImportFenceFdInfoKHR structure"
}
]
},
"VkImportFenceFdInfoKHR": {
"(VK_KHR_external_fence_fd)": [
{
"vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportFenceFdInfoKHR
table"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
"text": " fd
must obey any requirements listed for handleType
in external fence handle types compatibility"
},
{
"vuid": "VUID-VkImportFenceFdInfoKHR-handleType-07306",
"text": " If handleType
refers to a handle type with copy payload transference semantics, flags
must contain VK_FENCE_IMPORT_TEMPORARY_BIT
"
},
{
"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": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkSemaphoreCreateInfo-pNext-06789",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT
."
}
],
"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 VkExportMetalObjectCreateInfoEXT, VkExportSemaphoreCreateInfo, VkExportSemaphoreWin32HandleInfoKHR, VkImportMetalSharedEventInfoEXT, or VkSemaphoreTypeCreateInfo"
},
{
"vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT"
},
{
"vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkSemaphoreTypeCreateInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252",
"text": " If the timelineSemaphore
feature is not enabled, semaphoreType
must not equal VK_SEMAPHORE_TYPE_TIMELINE
"
},
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279",
"text": " If semaphoreType
is VK_SEMAPHORE_TYPE_BINARY
, initialValue
must be zero"
},
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO
"
},
{
"vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter",
"text": " semaphoreType
must be a valid VkSemaphoreType value"
}
]
},
"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 included in the pNext
chain of VkSemaphoreCreateInfo"
},
{
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"vkGetSemaphoreWin32HandleKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
"text": " pGetWin32HandleInfo
must be a valid pointer to a valid VkSemaphoreGetWin32HandleInfoKHR structure"
},
{
"vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
}
]
},
"VkSemaphoreGetWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
"text": " handleType
must have been included in VkExportSemaphoreCreateInfo::handleTypes
when the semaphore
’s current payload was created"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
"text": " If handleType
is defined as an NT handle, vkGetSemaphoreWin32HandleKHR must be called no more than once for each valid unique combination of semaphore
and handleType
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
"text": " semaphore
must not currently have its payload replaced by an imported payload as described below in Importing Semaphore Payloads unless that imported payload’s handle type was included in VkExternalSemaphoreProperties::exportFromImportedHandleTypes
for handleType
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
"text": " If handleType
refers to a handle type with copy payload transference semantics, as defined below in Importing Semaphore Payloads, there must be no queue waiting on semaphore
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must be signaled, or have an associated semaphore signal operation pending execution"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
"text": " handleType
must be defined as an NT handle or a global share handle"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"vkGetSemaphoreFdKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
"text": " pGetFdInfo
must be a valid pointer to a valid VkSemaphoreGetFdInfoKHR structure"
},
{
"vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
"text": " pFd
must be a valid pointer to an int
value"
}
]
},
"VkSemaphoreGetFdInfoKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
"text": " handleType
must have been included in VkExportSemaphoreCreateInfo::handleTypes
when semaphore
’s current payload was created"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
"text": " semaphore
must not currently have its payload replaced by an imported payload as described below in Importing Semaphore Payloads unless that imported payload’s handle type was included in VkExternalSemaphoreProperties::exportFromImportedHandleTypes
for handleType
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
"text": " If handleType
refers to a handle type with copy payload transference semantics, as defined below in Importing Semaphore Payloads, there must be no queue waiting on semaphore
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must be signaled, or have an associated semaphore signal operation pending execution"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
"text": " handleType
must be defined as a POSIX file descriptor handle"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
],
"(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03253",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must have been created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
"
},
{
"vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must have also been submitted for execution"
}
]
},
"vkGetSemaphoreZirconHandleFUCHSIA": {
"(VK_FUCHSIA_external_semaphore)": [
{
"vuid": "VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetSemaphoreZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter",
"text": " pGetZirconHandleInfo
must be a valid pointer to a valid VkSemaphoreGetZirconHandleInfoFUCHSIA structure"
},
{
"vuid": "VUID-vkGetSemaphoreZirconHandleFUCHSIA-pZirconHandle-parameter",
"text": " pZirconHandle
must be a valid pointer to a zx_handle_t
value"
}
]
},
"VkSemaphoreGetZirconHandleInfoFUCHSIA": {
"(VK_FUCHSIA_external_semaphore)": [
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04758",
"text": " handleType
must have been included in VkExportSemaphoreCreateInfo::handleTypes
when semaphore
’s current payload was created"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04759",
"text": " semaphore
must not currently have its payload replaced by an imported payload as described below in Importing Semaphore Payloads unless that imported payload’s handle type was included in VkExternalSemaphoreProperties::exportFromImportedHandleTypes
for handleType
"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04760",
"text": " If handleType
refers to a handle type with copy payload transference semantics, as defined below in Importing Semaphore Payloads, there must be no queue waiting on semaphore
"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04761",
"text": " If handleType
refers to a handle type with copy payload transference semantics, semaphore
must be signaled, or have an associated semaphore signal operation pending execution"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-handleType-04762",
"text": " handleType
must be defined as a Zircon event handle"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-04763",
"text": " semaphore
must have been created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkSemaphoreGetZirconHandleInfoFUCHSIA-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
"
}
]
},
"vkGetSemaphoreCounterValue": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-03255",
"text": " semaphore
must have been created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
"
},
{
"vuid": "VUID-vkGetSemaphoreCounterValue-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-vkGetSemaphoreCounterValue-pValue-parameter",
"text": " pValue
must be a valid pointer to a uint64_t
value"
},
{
"vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parent",
"text": " semaphore
must have been created, allocated, or retrieved from device
"
}
]
},
"vkWaitSemaphores": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkWaitSemaphores-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkWaitSemaphores-pWaitInfo-parameter",
"text": " pWaitInfo
must be a valid pointer to a valid VkSemaphoreWaitInfo structure"
}
]
},
"VkSemaphoreWaitInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-03256",
"text": " All of the elements of pSemaphores
must reference a semaphore that was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
"
},
{
"vuid": "VUID-VkSemaphoreWaitInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO
"
},
{
"vuid": "VUID-VkSemaphoreWaitInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreWaitInfo-flags-parameter",
"text": " flags
must be a valid combination of VkSemaphoreWaitFlagBits values"
},
{
"vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-parameter",
"text": " pSemaphores
must be a valid pointer to an array of semaphoreCount
valid VkSemaphore handles"
},
{
"vuid": "VUID-VkSemaphoreWaitInfo-pValues-parameter",
"text": " pValues
must be a valid pointer to an array of semaphoreCount
uint64_t
values"
},
{
"vuid": "VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength",
"text": " semaphoreCount
must be greater than 0
"
}
]
},
"vkSignalSemaphore": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkSignalSemaphore-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSignalSemaphore-pSignalInfo-parameter",
"text": " pSignalInfo
must be a valid pointer to a valid VkSemaphoreSignalInfo structure"
}
]
},
"VkSemaphoreSignalInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkSemaphoreSignalInfo-semaphore-03257",
"text": " semaphore
must have been created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
"
},
{
"vuid": "VUID-VkSemaphoreSignalInfo-value-03258",
"text": " value
must have a value greater than the current value of the semaphore"
},
{
"vuid": "VUID-VkSemaphoreSignalInfo-value-03259",
"text": " value
must be less than the value of any pending semaphore signal operations"
},
{
"vuid": "VUID-VkSemaphoreSignalInfo-value-03260",
"text": " value
must have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on semaphore
by more than maxTimelineSemaphoreValueDifference
"
},
{
"vuid": "VUID-VkSemaphoreSignalInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO
"
},
{
"vuid": "VUID-VkSemaphoreSignalInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSemaphoreSignalInfo-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
}
]
},
"vkImportSemaphoreWin32HandleKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
"text": " pImportSemaphoreWin32HandleInfo
must be a valid pointer to a valid VkImportSemaphoreWin32HandleInfoKHR structure"
}
]
},
"VkImportSemaphoreWin32HandleInfoKHR": {
"(VK_KHR_external_semaphore_win32)": [
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR
table"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
"text": " If handleType
is not VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
or VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT
, name
must be NULL
"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
"text": " If handle
is NULL
, name
must name a valid synchronization primitive of the type specified by handleType
"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
"text": " If 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-handleType-03261",
"text": " If handleType
is VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
or VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
, the VkSemaphoreCreateInfo::flags
field must match that of the semaphore from which handle
or name
was exported"
},
{
"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"
}
],
"(VK_KHR_external_semaphore_win32)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262",
"text": " If handleType
is VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT
or VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
, the VkSemaphoreTypeCreateInfo::semaphoreType
field must match that of the semaphore from which handle
or name
was exported"
},
{
"vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322",
"text": " If flags
contains VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
, the VkSemaphoreTypeCreateInfo::semaphoreType
field of the semaphore from which handle
or name
was exported must not be VK_SEMAPHORE_TYPE_TIMELINE
"
}
]
},
"vkImportSemaphoreFdKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
"text": " semaphore
must not be associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
"text": " pImportSemaphoreFdInfo
must be a valid pointer to a valid VkImportSemaphoreFdInfoKHR structure"
}
]
},
"VkImportSemaphoreFdInfoKHR": {
"(VK_KHR_external_semaphore_fd)": [
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportSemaphoreFdInfoKHR
table"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
"text": " fd
must obey any requirements listed for handleType
in external semaphore handle types compatibility"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03263",
"text": " If handleType
is VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
, the VkSemaphoreCreateInfo::flags
field must match that of the semaphore from which fd
was exported"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-07307",
"text": " If handleType
refers to a handle type with copy payload transference semantics, flags
must contain VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
"
},
{
"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"
}
],
"(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03264",
"text": " If handleType
is VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT
, the VkSemaphoreTypeCreateInfo::semaphoreType
field must match that of the semaphore from which fd
was exported"
},
{
"vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-03323",
"text": " If flags
contains VK_SEMAPHORE_IMPORT_TEMPORARY_BIT
, the VkSemaphoreTypeCreateInfo::semaphoreType
field of the semaphore from which fd
was exported must not be VK_SEMAPHORE_TYPE_TIMELINE
"
}
]
},
"vkImportSemaphoreZirconHandleFUCHSIA": {
"(VK_FUCHSIA_external_semaphore)": [
{
"vuid": "VUID-vkImportSemaphoreZirconHandleFUCHSIA-semaphore-04764",
"text": " semaphore
must not be associated with any queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkImportSemaphoreZirconHandleFUCHSIA-pImportSemaphoreZirconHandleInfo-parameter",
"text": " pImportSemaphoreZirconHandleInfo
must be a valid pointer to a valid VkImportSemaphoreZirconHandleInfoFUCHSIA structure"
}
]
},
"VkImportSemaphoreZirconHandleInfoFUCHSIA": {
"(VK_FUCHSIA_external_semaphore)": [
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-04765",
"text": " handleType
must be a value included in the Handle Types Supported by VkImportSemaphoreZirconHandleInfoFUCHSIA
table"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04766",
"text": " zirconHandle
must obey any requirements listed for handleType
in external semaphore handle types compatibility"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-zirconHandle-04767",
"text": " zirconHandle
must have ZX_RIGHTS_BASIC
and ZX_RIGHTS_SIGNAL
rights"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphore-parameter",
"text": " semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-flags-parameter",
"text": " flags
must be a valid combination of VkSemaphoreImportFlagBits values"
},
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
],
"(VK_FUCHSIA_external_semaphore)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkImportSemaphoreZirconHandleInfoFUCHSIA-semaphoreType-04768",
"text": " The VkSemaphoreTypeCreateInfo::semaphoreType
field must not be VK_SEMAPHORE_TYPE_TIMELINE
"
}
]
},
"vkCreateEvent": {
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-vkCreateEvent-events-04468",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::events
is VK_FALSE
, then the implementation does not support events, and vkCreateEvent must not be used"
}
],
"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": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkEventCreateInfo-pNext-06790",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT
."
}
],
"core": [
{
"vuid": "VUID-VkEventCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
"
},
{
"vuid": "VUID-VkEventCreateInfo-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 VkExportMetalObjectCreateInfoEXT or VkImportMetalSharedEventInfoEXT"
},
{
"vuid": "VUID-VkEventCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT"
},
{
"vuid": "VUID-VkEventCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkEventCreateFlagBits values"
}
]
},
"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": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkGetEventStatus-event-03940",
"text": " event
must not have been created with VK_EVENT_CREATE_DEVICE_ONLY_BIT
"
}
],
"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": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkSetEvent-event-03941",
"text": " event
must not have been created with VK_EVENT_CREATE_DEVICE_ONLY_BIT
"
}
],
"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-03821",
"text": " There must be an execution dependency between vkResetEvent
and the execution of any vkCmdWaitEvents that includes event
in its pEvents
parameter"
},
{
"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
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkResetEvent-event-03822",
"text": " There must be an execution dependency between vkResetEvent
and the execution of any vkCmdWaitEvents2 that includes event
in its pEvents
parameter"
},
{
"vuid": "VUID-vkResetEvent-event-03823",
"text": " event
must not have been created with VK_EVENT_CREATE_DEVICE_ONLY_BIT
"
}
]
},
"vkCmdSetEvent2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdSetEvent2-synchronization2-03824",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetEvent2-dependencyFlags-03825",
"text": " The dependencyFlags
member of pDependencyInfo
must be 0
"
},
{
"vuid": "VUID-vkCmdSetEvent2-srcStageMask-03827",
"text": " The srcStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfo
must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdSetEvent2-dstStageMask-03828",
"text": " The dstStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfo
must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdSetEvent2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetEvent2-event-parameter",
"text": " event
must be a valid VkEvent handle"
},
{
"vuid": "VUID-vkCmdSetEvent2-pDependencyInfo-parameter",
"text": " pDependencyInfo
must be a valid pointer to a valid VkDependencyInfo structure"
},
{
"vuid": "VUID-vkCmdSetEvent2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetEvent2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdSetEvent2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdSetEvent2-commonparent",
"text": " Both of commandBuffer
, and event
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdSetEvent2-commandBuffer-03826",
"text": " The current device mask of commandBuffer
must include exactly one physical device"
}
]
},
"VkDependencyInfo": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkDependencyInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEPENDENCY_INFO
"
},
{
"vuid": "VUID-VkDependencyInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDependencyInfo-dependencyFlags-parameter",
"text": " dependencyFlags
must be a valid combination of VkDependencyFlagBits values"
},
{
"vuid": "VUID-VkDependencyInfo-pMemoryBarriers-parameter",
"text": " If memoryBarrierCount
is not 0
, pMemoryBarriers
must be a valid pointer to an array of memoryBarrierCount
valid VkMemoryBarrier2 structures"
},
{
"vuid": "VUID-VkDependencyInfo-pBufferMemoryBarriers-parameter",
"text": " If bufferMemoryBarrierCount
is not 0
, pBufferMemoryBarriers
must be a valid pointer to an array of bufferMemoryBarrierCount
valid VkBufferMemoryBarrier2 structures"
},
{
"vuid": "VUID-VkDependencyInfo-pImageMemoryBarriers-parameter",
"text": " If imageMemoryBarrierCount
is not 0
, pImageMemoryBarriers
must be a valid pointer to an array of imageMemoryBarrierCount
valid VkImageMemoryBarrier2 structures"
}
]
},
"vkCmdSetEvent": {
"core": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-06457",
"text": " Any pipeline stage included in stageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-01149",
"text": " stageMask
must not include VK_PIPELINE_STAGE_HOST_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-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode 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_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdSetEvent-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdSetEvent-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:stageMask must not be 0
"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdSetEvent-stageMask-04996",
"text": " pname:stageMask must not be 0
"
}
],
"(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"
}
]
},
"vkCmdResetEvent2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent2-synchronization2-03829",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03830",
"text": " stageMask
must not include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent2-event-03831",
"text": " There must be an execution dependency between vkCmdResetEvent2
and the execution of any vkCmdWaitEvents that includes event
in its pEvents
parameter"
},
{
"vuid": "VUID-vkCmdResetEvent2-event-03832",
"text": " There must be an execution dependency between vkCmdResetEvent2
and the execution of any vkCmdWaitEvents2 that includes event
in its pEvents
parameter"
},
{
"vuid": "VUID-vkCmdResetEvent2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdResetEvent2-event-parameter",
"text": " event
must be a valid VkEvent handle"
},
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-parameter",
"text": " stageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-vkCmdResetEvent2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResetEvent2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdResetEvent2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResetEvent2-commonparent",
"text": " Both of commandBuffer
, and event
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdResetEvent2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdResetEvent2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-vkCmdResetEvent2-stageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCmdResetEvent2-commandBuffer-03833",
"text": " commandBuffer
’s current device mask must include exactly one physical device"
}
]
},
"vkCmdResetEvent": {
"core": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-06458",
"text": " Any pipeline stage included in stageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-01153",
"text": " stageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdResetEvent-event-03834",
"text": " There must be an execution dependency between vkCmdResetEvent
and the execution of any vkCmdWaitEvents that includes event
in its pEvents
parameter"
},
{
"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-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode 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_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdResetEvent-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdResetEvent-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:stageMask must not be 0
"
},
{
"vuid": "VUID-vkCmdResetEvent-event-03835",
"text": " There must be an execution dependency between vkCmdResetEvent
and the execution of any vkCmdWaitEvents2 that includes event
in its pEvents
parameter"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdResetEvent-stageMask-04996",
"text": " pname:stageMask must not be 0
"
}
],
"(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"
}
]
},
"vkCmdWaitEvents2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWaitEvents2-synchronization2-03836",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pEvents-03837",
"text": " Members of pEvents
must not have been signaled by vkCmdSetEvent"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pEvents-03838",
"text": " For any element i of pEvents
, if that event is signaled by vkCmdSetEvent2, that command’s dependencyInfo
parameter must be exactly equal to the ith element of pDependencyInfos
"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pEvents-03839",
"text": " For any element i of pEvents
, if that event is signaled by vkSetEvent, barriers in the ith element of pDependencyInfos
must include only host operations in their first synchronization scope"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pEvents-03840",
"text": " For any element i of pEvents
, if barriers in the ith element of pDependencyInfos
include only host operations, the ith element of pEvents
must be signaled before vkCmdWaitEvents2 is executed"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pEvents-03841",
"text": " For any element i of pEvents
, if barriers in the ith element of pDependencyInfos
do not include host operations, the ith element of pEvents
must be signaled by a corresponding vkCmdSetEvent2 that occurred earlier in submission order"
},
{
"vuid": "VUID-vkCmdWaitEvents2-srcStageMask-03842",
"text": " The srcStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfos
must either include only pipeline stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from, or include only VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents2-dstStageMask-03843",
"text": " The dstStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfos
must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdWaitEvents2-dependencyFlags-03844",
"text": " If vkCmdWaitEvents2
is being called inside a render pass instance, the srcStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfos
must not include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents2-commandBuffer-03846",
"text": " commandBuffer
’s current device mask must include exactly one physical device"
},
{
"vuid": "VUID-vkCmdWaitEvents2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pEvents-parameter",
"text": " pEvents
must be a valid pointer to an array of eventCount
valid VkEvent handles"
},
{
"vuid": "VUID-vkCmdWaitEvents2-pDependencyInfos-parameter",
"text": " pDependencyInfos
must be a valid pointer to an array of eventCount
valid VkDependencyInfo structures"
},
{
"vuid": "VUID-vkCmdWaitEvents2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWaitEvents2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdWaitEvents2-eventCount-arraylength",
"text": " eventCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents2-commonparent",
"text": " Both of commandBuffer
, and the elements of pEvents
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdWaitEvents": {
"core": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcAccessMask-02815",
"text": " The srcAccessMask
member of each element of pMemoryBarriers
must only include access flags that are supported by one or more of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstAccessMask-02816",
"text": " The dstAccessMask
member of each element of pMemoryBarriers
must only include access flags that are supported by one or more of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817",
"text": " For any element of pBufferMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its srcQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its srcAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818",
"text": " For any element of pBufferMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its dstQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its dstAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819",
"text": " For any element of pImageMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its srcQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its srcAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820",
"text": " For any element of pImageMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its dstQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its dstAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-06459",
"text": " Any pipeline stage included in srcStageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-06460",
"text": " Any pipeline stage included in dstStageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
"text": " srcStageMask
must be the bitwise OR of the stageMask
parameter used in previous calls to vkCmdSetEvent
with any of the elements of pEvents
and VK_PIPELINE_STAGE_HOST_BIT
if any of the elements of pEvents
was set using vkSetEvent
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-07308",
"text": " If vkCmdWaitEvents
is being called inside a render pass instance, srcStageMask
must not include VK_PIPELINE_STAGE_HOST_BIT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803",
"text": " The srcQueueFamilyIndex
and dstQueueFamilyIndex
members of any element of pBufferMemoryBarriers
or pImageMemoryBarriers
must be equal"
},
{
"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-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
"text": " If memoryBarrierCount
is not 0
, pMemoryBarriers
must be a valid pointer to an array of memoryBarrierCount
valid VkMemoryBarrier structures"
},
{
"vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
"text": " If bufferMemoryBarrierCount
is not 0
, pBufferMemoryBarriers
must be a valid pointer to an array of bufferMemoryBarrierCount
valid VkBufferMemoryBarrier structures"
},
{
"vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
"text": " If imageMemoryBarrierCount
is not 0
, pImageMemoryBarriers
must be a valid pointer to an array of imageMemoryBarrierCount
valid VkImageMemoryBarrier structures"
},
{
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode 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_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWaitEvents-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-vkCmdWaitEvents-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWaitEvents-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-vkCmdWaitEvents-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:dstStageMask must not be 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents-pEvents-03847",
"text": " Elements of pEvents
must not have been signaled by vkCmdSetEvent2"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWaitEvents-srcStageMask-04996",
"text": " pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-vkCmdWaitEvents-dstStageMask-04996",
"text": " pname:dstStageMask must not be 0
"
}
],
"(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"
}
]
},
"vkCmdPipelineBarrier2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdPipelineBarrier2-pDependencies-02285",
"text": " If fname:vkCmdPipelineBarrier2 is called within a render pass instance, the render pass must have been created with at least one VkSubpassDependency instance in VkRenderPassCreateInfo
::pDependencies
that expresses a dependency from the current subpass to itself, with synchronization scopes and access scopes that are all supersets of the scopes defined in this command"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-bufferMemoryBarrierCount-01178",
"text": " If fname:vkCmdPipelineBarrier2 is called within a render pass instance, it must not include any buffer memory barriers"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-image-04073",
"text": " If fname:vkCmdPipelineBarrier2 is called within a render pass instance, the image
member of any image memory barrier included in this command must be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-oldLayout-01181",
"text": " If fname:vkCmdPipelineBarrier2 is called within a render pass instance, the oldLayout
and newLayout
members of any image memory barrier included in this command must be equal"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-srcQueueFamilyIndex-01182",
"text": " If fname:vkCmdPipelineBarrier2 is called within a render pass instance, the srcQueueFamilyIndex
and dstQueueFamilyIndex
members of any image memory barrier included in this command must be equal"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-synchronization2-03848",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-srcStageMask-03849",
"text": " The srcStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfo
must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-dstStageMask-03850",
"text": " The dstStageMask
member of any element of the pMemoryBarriers
, pBufferMemoryBarriers
, or pImageMemoryBarriers
members of pDependencyInfo
must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-pDependencyInfo-parameter",
"text": " pDependencyInfo
must be a valid pointer to a valid VkDependencyInfo structure"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPipelineBarrier2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, compute, decode, or encode operations"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdPipelineBarrier2-dependencyFlags-01186",
"text": " If fname:vkCmdPipelineBarrier2 is called outside of a render pass instance, VK_DEPENDENCY_VIEW_LOCAL_BIT
must not be included in the dependency flags"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdPipelineBarrier2-None-06191",
"text": " If fname:vkCmdPipelineBarrier2 is called within a render pass instance, the render pass must not have been started with vkCmdBeginRendering"
}
]
},
"vkCmdPipelineBarrier": {
"core": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-02815",
"text": " The srcAccessMask
member of each element of pMemoryBarriers
must only include access flags that are supported by one or more of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-02816",
"text": " The dstAccessMask
member of each element of pMemoryBarriers
must only include access flags that are supported by one or more of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817",
"text": " For any element of pBufferMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its srcQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its srcAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818",
"text": " For any element of pBufferMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its dstQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its dstAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819",
"text": " For any element of pImageMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its srcQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its srcAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820",
"text": " For any element of pImageMemoryBarriers
, if its srcQueueFamilyIndex
and dstQueueFamilyIndex
members are equal, or if its dstQueueFamilyIndex
is the queue family index that was used to create the command pool that commandBuffer
was allocated from, then its dstAccessMask
member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
"text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must have been created with at least one VkSubpassDependency instance in VkRenderPassCreateInfo
::pDependencies
that expresses a dependency from the current subpass to itself, with synchronization scopes and access scopes that are all supersets of the scopes defined in this command"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
"text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, it must not include any buffer memory barriers"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-image-04073",
"text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the image
member of any image memory barrier included in this command must be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
"text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the oldLayout
and newLayout
members of any image memory barrier included in this command must be equal"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
"text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the srcQueueFamilyIndex
and dstQueueFamilyIndex
members of any image memory barrier included in this command must be equal"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-06461",
"text": " Any pipeline stage included in srcStageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-06462",
"text": " Any pipeline stage included in dstStageMask
must be supported by the capabilities of the queue family specified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool
that commandBuffer
was allocated from, as specified in the table of supported pipeline stages"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-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-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
"text": " dependencyFlags
must be a valid combination of VkDependencyFlagBits values"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
"text": " If memoryBarrierCount
is not 0
, pMemoryBarriers
must be a valid pointer to an array of memoryBarrierCount
valid VkMemoryBarrier structures"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
"text": " If bufferMemoryBarrierCount
is not 0
, pBufferMemoryBarriers
must be a valid pointer to an array of bufferMemoryBarrierCount
valid VkBufferMemoryBarrier structures"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
"text": " If imageMemoryBarrierCount
is not 0
, pImageMemoryBarriers
must be a valid pointer to an array of imageMemoryBarrierCount
valid VkImageMemoryBarrier structures"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, compute, decode, or encode operations"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:dstStageMask must not be 0
"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04996",
"text": " pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04996",
"text": " pname:dstStageMask must not be 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
"text": " If fname:vkCmdPipelineBarrier is called outside of a render pass instance, VK_DEPENDENCY_VIEW_LOCAL_BIT
must not be included in the dependency flags"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdPipelineBarrier-None-06191",
"text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must not have been started with vkCmdBeginRendering"
}
]
},
"VkMemoryBarrier2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03900",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03901",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INDEX_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03902",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03903",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03904",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_UNIFORM_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03905",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_SAMPLED_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03906",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_STORAGE_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03907",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03909",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03910",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03911",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03912",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03913",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03914",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03915",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFER_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_CLEAR_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03916",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_HOST_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03917",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_HOST_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03900",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03901",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INDEX_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03902",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03903",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03904",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_UNIFORM_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03905",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_SAMPLED_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03906",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_STORAGE_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03907",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03909",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03910",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03911",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03912",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03913",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03914",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03915",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFER_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_CLEAR_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03916",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_HOST_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03917",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_HOST_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_BARRIER_2
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits2 values"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits2 values"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03918",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03918",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03919",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03919",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03920",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04747",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03922",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03920",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04747",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03922",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkMemoryBarrier2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkMemoryBarrier2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcStageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04994",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstStageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04994",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07454",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07457",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07458",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07454",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07457",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07458",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+!(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03908",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03908",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03923",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03923",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03924",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03925",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03924",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03925",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03926",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03926",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03927",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-03928",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03927",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-03928",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+!(VK_KHR_ray_query)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-06254",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-06254",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+!(VK_KHR_ray_query)+!(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-06255",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-06255",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_query)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-06256",
"text": " If the rayQuery
feature is not enabled and pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-06256",
"text": " If the rayQuery
feature is not enabled and pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_query)+!(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-06257",
"text": " If the rayQuery
feature is not enabled and pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-06257",
"text": " If the rayQuery
feature is not enabled and pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07272",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
or VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07272",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
or VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04858",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04859",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04858",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04859",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04860",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-04861",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04860",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-04861",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07455",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkMemoryBarrier2-srcAccessMask-07456",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07455",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkMemoryBarrier2-dstAccessMask-07456",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
}
]
},
"VkMemoryBarrier": {
"core": [
{
"vuid": "VUID-VkMemoryBarrier-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
"
},
{
"vuid": "VUID-VkMemoryBarrier-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
}
]
},
"VkBufferMemoryBarrier2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03900",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03901",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INDEX_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03902",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03903",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03904",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_UNIFORM_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03905",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_SAMPLED_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03906",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_STORAGE_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03907",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03909",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03910",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03911",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03912",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03913",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03914",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03915",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFER_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_CLEAR_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03916",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_HOST_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03917",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_HOST_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03900",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03901",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INDEX_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03902",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03903",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03904",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_UNIFORM_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03905",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_SAMPLED_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03906",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_STORAGE_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03907",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03909",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03910",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03911",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03912",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03913",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03914",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03915",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFER_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_CLEAR_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03916",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_HOST_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03917",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_HOST_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-offset-01187",
"text": " offset
must be less than the size of buffer
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-size-01188",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be greater than 0
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-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-VkBufferMemoryBarrier2-buffer-01931",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03851",
"text": " If either srcStageMask
or dstStageMask
includes VK_PIPELINE_STAGE_2_HOST_BIT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must be equal"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits2 values"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits2 values"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03918",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03918",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03919",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03919",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03920",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04747",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03922",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03920",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04747",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03922",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcStageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04994",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstStageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04994",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07454",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07457",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07458",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07454",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07457",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07458",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+!(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03908",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03908",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03923",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03923",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03924",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03925",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03924",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03925",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03926",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03926",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03927",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-03928",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03927",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-03928",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+!(VK_KHR_ray_query)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-06254",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-06254",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+!(VK_KHR_ray_query)+!(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-06255",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-06255",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_query)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-06256",
"text": " If the rayQuery
feature is not enabled and pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-06256",
"text": " If the rayQuery
feature is not enabled and pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_query)+!(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-06257",
"text": " If the rayQuery
feature is not enabled and pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-06257",
"text": " If the rayQuery
feature is not enabled and pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07272",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
or VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07272",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
or VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04858",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04859",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04858",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04859",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04860",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-04861",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04860",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-04861",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07455",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcAccessMask-07456",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07455",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-dstAccessMask-07456",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+!(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-buffer-04086",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must be valid queue families"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-04087",
"text": " If srcQueueFamilyIndex
is not equal to dstQueueFamilyIndex
, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-buffer-04088",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, and one of srcQueueFamilyIndex
and dstQueueFamilyIndex
is one of the special queue family values reserved for external memory transfers, the other must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier2-buffer-04089",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer"
}
]
},
"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-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-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
}
],
"!(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-04086",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must be valid queue families"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-synchronization2-03852",
"text": " If the synchronization2
feature is not enabled, and buffer
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be VK_QUEUE_FAMILY_IGNORED
"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087",
"text": " If srcQueueFamilyIndex
is not equal to dstQueueFamilyIndex
, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-04088",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, and one of srcQueueFamilyIndex
and dstQueueFamilyIndex
is one of the special queue family values reserved for external memory transfers, the other must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-buffer-04089",
"text": " If buffer
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer"
},
{
"vuid": "VUID-VkBufferMemoryBarrier-synchronization2-03853",
"text": " If the synchronization2
feature is not enabled, and 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
"
}
]
},
"VkImageMemoryBarrier2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03900",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03901",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INDEX_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03902",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03903",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03904",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_UNIFORM_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03905",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_SAMPLED_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03906",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_STORAGE_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03907",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03909",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03910",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03911",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03912",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03913",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03914",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03915",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFER_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_CLEAR_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03916",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_HOST_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03917",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_HOST_WRITE_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03929",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03930",
"text": " If the tessellationShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03900",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03901",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INDEX_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03902",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT
, VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03903",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT
, VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03904",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_UNIFORM_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03905",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_SAMPLED_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03906",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_STORAGE_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03907",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03909",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03910",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03911",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03912",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03913",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03914",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03915",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFER_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COPY_BIT
, VK_PIPELINE_STAGE_2_BLIT_BIT
, VK_PIPELINE_STAGE_2_RESOLVE_BIT
, VK_PIPELINE_STAGE_2_CLEAR_BIT
, VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03916",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_HOST_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03917",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_HOST_WRITE_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_HOST_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-01486",
"text": " subresourceRange.baseMipLevel
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-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-VkImageMemoryBarrier2-subresourceRange-01488",
"text": " subresourceRange.baseArrayLayer
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-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-VkImageMemoryBarrier2-image-01932",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01208",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01209",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01210",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01211",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01212",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01213",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01197",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, oldLayout
must be VK_IMAGE_LAYOUT_UNDEFINED
or the current layout of the image subresources affected by the barrier"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-newLayout-01198",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, newLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03854",
"text": " If either srcStageMask
or dstStageMask
includes VK_PIPELINE_STAGE_2_HOST_BIT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must be equal"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03855",
"text": " If srcStageMask
includes VK_PIPELINE_STAGE_2_HOST_BIT
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, oldLayout
must be one of VK_IMAGE_LAYOUT_PREINITIALIZED
, VK_IMAGE_LAYOUT_UNDEFINED
, or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkSampleLocationsInfoEXT"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits2 values"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits2 values"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-parameter",
"text": " oldLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-newLayout-parameter",
"text": " newLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-subresourceRange-parameter",
"text": " subresourceRange
must be a valid VkImageSubresourceRange structure"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03918",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03918",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03919",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03919",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03920",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04747",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03922",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03933",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03920",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04747",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT
, VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03922",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03934",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-03935",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-04957",
"text": " If the subpassShading
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcStageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04994",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstStageMask-04995",
"text": " If the invocationMask
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04994",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07454",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07457",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07458",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07454",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07457",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07458",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT
or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+!(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03908",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03908",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_READ_BIT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03923",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03923",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03924",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03925",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03924",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03925",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03926",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03926",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT
VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT
, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03927",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-03928",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03927",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
, or one of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-03928",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR
or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+!(VK_KHR_ray_query)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-06254",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-06254",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+!(VK_KHR_ray_query)+!(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-06255",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-06255",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_query)+(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-06256",
"text": " If the rayQuery
feature is not enabled and pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-06256",
"text": " If the rayQuery
feature is not enabled and pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages except VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_query)+!(VK_KHR_ray_tracing_pipeline,VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-06257",
"text": " If the rayQuery
feature is not enabled and pname:srcAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:srcStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-06257",
"text": " If the rayQuery
feature is not enabled and pname:dstAccessMask includes VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR
, pname:dstStageMask must not include any of the VK_PIPELINE_STAGE_*_SHADER_BIT
stages"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_acceleration_structure,VK_NV_ray_tracing)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07272",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
or VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07272",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT
or VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04858",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04859",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04858",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04859",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04860",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-04861",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04860",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-04861",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07455",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcAccessMask-07456",
"text": " If pname:srcAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
, pname:srcStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07455",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-dstAccessMask-07456",
"text": " If pname:dstAccessMask includes VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV
, pname:dstStageMask must include VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01658",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-01659",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_2,VK_EXT_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04065",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
then image
must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SAMPLED_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04066",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04067",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
then image
must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SAMPLED_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04068",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-synchronization2-06911",
"text": " If the synchronization2
feature is not enabled, layout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03938",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
, image
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-03939",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL
, image
must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SAMPLED_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-oldLayout-02088",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
then image
must have been created with VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
set"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-image-02902",
"text": " If image
has a color format, then the aspectMask
member of subresourceRange
must be VK_IMAGE_ASPECT_COLOR_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-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-VkImageMemoryBarrier2-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-VkImageMemoryBarrier2-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_3,VK_KHR_synchronization2)+!(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-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
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-image-03319",
"text": " If image
has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts
feature is enabled, then the aspectMask
member of subresourceRange
must include either or both VK_IMAGE_ASPECT_DEPTH_BIT
and VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-image-03320",
"text": " If image
has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts
feature is not enabled, then the aspectMask
member of subresourceRange
must include both VK_IMAGE_ASPECT_DEPTH_BIT
and VK_IMAGE_ASPECT_STENCIL_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+!(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-image-04069",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must be valid queue families"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04070",
"text": " If srcQueueFamilyIndex
is not equal to dstQueueFamilyIndex
, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-image-04071",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, and one of srcQueueFamilyIndex
and dstQueueFamilyIndex
is one of the special queue family values reserved for external memory transfers, the other must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkImageMemoryBarrier2-image-04072",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07006",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
then image
must have been created with either the VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
usage bits, and the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
or VK_IMAGE_USAGE_SAMPLED_BIT
usage bits, and the VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
usage bit."
},
{
"vuid": "VUID-VkImageMemoryBarrier2-attachmentFeedbackLoopLayout-07313",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, newLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
}
]
},
"VkImageMemoryBarrier": {
"core": [
{
"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-01932",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, 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": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, newLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"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-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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_maintenance2)": [
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and 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
"
}
],
"(VK_VERSION_1_2,VK_EXT_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
then image
must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SAMPLED_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
},
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
then image
must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SAMPLED_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
then image
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
set"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkImageMemoryBarrier-synchronization2-06911",
"text": " If the synchronization2
feature is not enabled, layout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03938",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL
, image
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-03939",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL
, image
must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_SAMPLED_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
}
],
"(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
then image
must have been created with VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
set"
}
],
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageMemoryBarrier-image-02902",
"text": " If image
has a color format, then the aspectMask
member of subresourceRange
must be VK_IMAGE_ASPECT_COLOR_BIT
"
}
],
"(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_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"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
"
}
],
"(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkImageMemoryBarrier-image-03319",
"text": " If image
has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts
feature is enabled, then the aspectMask
member of subresourceRange
must include either or both VK_IMAGE_ASPECT_DEPTH_BIT
and VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-03320",
"text": " If image
has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts
feature is not enabled, then the aspectMask
member of subresourceRange
must include both VK_IMAGE_ASPECT_DEPTH_BIT
and VK_IMAGE_ASPECT_STENCIL_BIT
"
}
],
"!(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageMemoryBarrier-image-04069",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must be valid queue families"
},
{
"vuid": "VUID-VkImageMemoryBarrier-synchronization2-03856",
"text": " If the synchronization2
feature is not enabled, and image
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be VK_QUEUE_FAMILY_IGNORED
"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070",
"text": " If srcQueueFamilyIndex
is not equal to dstQueueFamilyIndex
, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-04071",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_CONCURRENT
, srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, and one of srcQueueFamilyIndex
and dstQueueFamilyIndex
is one of the special queue family values reserved for external memory transfers, the other must be VK_QUEUE_FAMILY_IGNORED
"
},
{
"vuid": "VUID-VkImageMemoryBarrier-image-04072",
"text": " If image
was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE
, and srcQueueFamilyIndex
and dstQueueFamilyIndex
are not equal, srcQueueFamilyIndex
and dstQueueFamilyIndex
must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer"
},
{
"vuid": "VUID-VkImageMemoryBarrier-synchronization2-03857",
"text": " If the synchronization2
feature is not enabled, and 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
"
}
],
"(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07006",
"text": " If srcQueueFamilyIndex
and dstQueueFamilyIndex
define a queue family ownership transfer or oldLayout
and newLayout
define an image layout transition, and oldLayout
or newLayout
is VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
then image
must have been created with either the VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
usage bits, and the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
or VK_IMAGE_USAGE_SAMPLED_BIT
usage bits, and the VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
usage bit."
},
{
"vuid": "VUID-VkImageMemoryBarrier-attachmentFeedbackLoopLayout-07313",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, newLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
}
]
},
"vkQueueWaitIdle": {
"core": [
{
"vuid": "VUID-vkQueueWaitIdle-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
}
]
},
"vkDeviceWaitIdle": {
"core": [
{
"vuid": "VUID-vkDeviceWaitIdle-device-parameter",
"text": " device
must be a valid VkDevice handle"
}
]
},
"vkGetCalibratedTimestampsEXT": {
"(VK_EXT_calibrated_timestamps)": [
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
"text": " pTimestampInfos
must be a valid pointer to an array of timestampCount
valid VkCalibratedTimestampInfoEXT structures"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
"text": " pTimestamps
must be a valid pointer to an array of timestampCount
uint64_t
values"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
"text": " pMaxDeviation
must be a valid pointer to a uint64_t
value"
},
{
"vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
"text": " timestampCount
must be greater than 0
"
}
]
},
"VkCalibratedTimestampInfoEXT": {
"(VK_EXT_calibrated_timestamps)": [
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
"text": " timeDomain
must be one of the VkTimeDomainEXT values returned by vkGetPhysicalDeviceCalibrateableTimeDomainsEXT"
},
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT
"
},
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
"text": " timeDomain
must be a valid VkTimeDomainEXT value"
}
]
},
"vkCmdBeginRendering": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdBeginRendering-dynamicRendering-06446",
"text": " The dynamicRendering
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBeginRendering-commandBuffer-06068",
"text": " If commandBuffer
is a secondary command buffer, pRenderingInfo->flags
must not include VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRendering-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginRendering-pRenderingInfo-parameter",
"text": " pRenderingInfo
must be a valid pointer to a valid VkRenderingInfo structure"
},
{
"vuid": "VUID-vkCmdBeginRendering-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginRendering-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginRendering-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginRendering-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkRenderingInfo": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkRenderingInfo-viewMask-06069",
"text": " If viewMask
is 0
, layerCount
must not be 0
"
},
{
"vuid": "VUID-VkRenderingInfo-multisampledRenderToSingleSampled-06857",
"text": " If none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, imageView
members of pDepthAttachment
, pStencilAttachment
, and elements of pColorAttachments
that are not VK_NULL_HANDLE must have been created with the same sampleCount
"
},
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06087",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, that imageView
must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06547",
"text": " If pDepthAttachment
is not NULL
and pDepthAttachment->imageView
is not VK_NULL_HANDLE, pDepthAttachment->imageView
must have been created with a format that includes a depth aspect"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06088",
"text": " If pDepthAttachment
is not NULL
and pDepthAttachment->imageView
is not VK_NULL_HANDLE, pDepthAttachment->imageView
must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-06548",
"text": " If pStencilAttachment
is not NULL
and pStencilAttachment->imageView
is not VK_NULL_HANDLE, pStencilAttachment->imageView
must have been created with a format that includes a stencil aspect"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-06089",
"text": " If pStencilAttachment
is not NULL
and pStencilAttachment->imageView
is not VK_NULL_HANDLE, pStencilAttachment->imageView
must have been created with a stencil usage including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06090",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, the layout
member of that element of pColorAttachments
must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06091",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, if the resolveMode
member of that element of pColorAttachments
is not VK_RESOLVE_MODE_NONE
, its resolveImageLayout
member must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06092",
"text": " If pDepthAttachment
is not NULL
and pDepthAttachment->imageView
is not VK_NULL_HANDLE, pDepthAttachment->layout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06093",
"text": " If pDepthAttachment
is not NULL
, pDepthAttachment->imageView
is not VK_NULL_HANDLE, and pDepthAttachment->resolveMode
is not VK_RESOLVE_MODE_NONE
, pDepthAttachment->resolveImageLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-06094",
"text": " If pStencilAttachment
is not NULL
and pStencilAttachment->imageView
is not VK_NULL_HANDLE, pStencilAttachment->layout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-06095",
"text": " If pStencilAttachment
is not NULL
, pStencilAttachment->imageView
is not VK_NULL_HANDLE, and pStencilAttachment->resolveMode
is not VK_RESOLVE_MODE_NONE
, pStencilAttachment->resolveImageLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06102",
"text": " If pDepthAttachment
is not NULL
and pDepthAttachment->imageView
is not VK_NULL_HANDLE, pDepthAttachment->resolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::supportedDepthResolveModes
"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-06103",
"text": " If pStencilAttachment
is not NULL
and pStencilAttachment->imageView
is not VK_NULL_HANDLE, pStencilAttachment->resolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::supportedStencilResolveModes
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06104",
"text": " If pDepthAttachment
or pStencilAttachment
are both not NULL
, pDepthAttachment->imageView
and pStencilAttachment->imageView
are both not VK_NULL_HANDLE, and VkPhysicalDeviceDepthStencilResolveProperties::independentResolveNone
is VK_FALSE
, the resolveMode
of both structures must be the same value"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06105",
"text": " If pDepthAttachment
or pStencilAttachment
are both not NULL
, pDepthAttachment->imageView
and pStencilAttachment->imageView
are both not VK_NULL_HANDLE, VkPhysicalDeviceDepthStencilResolveProperties::independentResolve
is VK_FALSE
, and the resolveMode
of neither structure is VK_RESOLVE_MODE_NONE
, the resolveMode
of both structures must be the same value"
},
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06106",
"text": " colorAttachmentCount
must be less than or equal to VkPhysicalDeviceLimits::maxColorAttachments
"
},
{
"vuid": "VUID-VkRenderingInfo-multiview-06127",
"text": " If the multiview
feature is not enabled, viewMask
must be 0
"
},
{
"vuid": "VUID-VkRenderingInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDERING_INFO
"
},
{
"vuid": "VUID-VkRenderingInfo-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, VkMultisampledRenderToSingleSampledInfoEXT, VkMultiviewPerViewAttributesInfoNVX, VkRenderingFragmentDensityMapAttachmentInfoEXT, or VkRenderingFragmentShadingRateAttachmentInfoKHR"
},
{
"vuid": "VUID-VkRenderingInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRenderingInfo-flags-parameter",
"text": " flags
must be a valid combination of VkRenderingFlagBits values"
},
{
"vuid": "VUID-VkRenderingInfo-pColorAttachments-parameter",
"text": " If colorAttachmentCount
is not 0
, pColorAttachments
must be a valid pointer to an array of colorAttachmentCount
valid VkRenderingAttachmentInfo structures"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-parameter",
"text": " If pDepthAttachment
is not NULL
, pDepthAttachment
must be a valid pointer to a valid VkRenderingAttachmentInfo structure"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-parameter",
"text": " If pStencilAttachment
is not NULL
, pStencilAttachment
must be a valid pointer to a valid VkRenderingAttachmentInfo structure"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06858",
"text": " If multisampled-render-to-single-sampled is enabled, then all attachments referenced by imageView
members of pDepthAttachment
, pStencilAttachment
, and elements of pColorAttachments
that are not VK_NULL_HANDLE must have a sample count that is either VK_SAMPLE_COUNT_1_BIT
or equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
."
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06859",
"text": " If multisampled-render-to-single-sampled is enabled, then all attachments referenced by imageView
members of pDepthAttachment
, pStencilAttachment
, and elements of pColorAttachments
that are not VK_NULL_HANDLE and have a sample count of VK_SAMPLE_COUNT_1_BIT
must have been created with VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
in their VkImageCreateInfo::flags
."
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+!(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderingInfo-renderArea-06071",
"text": " renderArea.offset.x
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderingInfo-renderArea-06072",
"text": " renderArea.offset.y
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderingInfo-renderArea-06073",
"text": " The sum of renderArea.offset.x
and renderArea.extent.width
must be less than or equal to maxFramebufferWidth
"
},
{
"vuid": "VUID-VkRenderingInfo-renderArea-06074",
"text": " The sum of renderArea.offset.y
and renderArea.extent.height
must be less than or equal to maxFramebufferHeight
"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06075",
"text": " The width of the imageView
member of any element of pColorAttachments
, pDepthAttachment
, or pStencilAttachment
that is not VK_NULL_HANDLE must be greater than or equal to renderArea.offset.x
+ renderArea.extent.width
"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06076",
"text": " The height of the imageView
member of any element of pColorAttachments
, pDepthAttachment
, or pStencilAttachment
that is not VK_NULL_HANDLE must be greater than or equal to renderArea.offset.y
+ renderArea.extent.height
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderingInfo-pNext-06077",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, renderArea.offset.x
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06078",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, renderArea.offset.y
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06079",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, the width of the imageView
member of any element of pColorAttachments
, pDepthAttachment
, or pStencilAttachment
that is not VK_NULL_HANDLE must be greater than or equal to renderArea.offset.x
+ renderArea.extent.width
"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06080",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, the height of the imageView
member of any element of pColorAttachments
, pDepthAttachment
, or pStencilAttachment
that is not VK_NULL_HANDLE must be greater than or equal to renderArea.offset.y
+ renderArea.extent.height
"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06083",
"text": " If the pNext
chain contains VkDeviceGroupRenderPassBeginInfo, the width of the imageView
member of any element of pColorAttachments
, pDepthAttachment
, or pStencilAttachment
that is not VK_NULL_HANDLE must be greater than or equal to the sum of the offset.x
and extent.width
members of each element of pDeviceRenderAreas
"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06084",
"text": " If the pNext
chain contains VkDeviceGroupRenderPassBeginInfo, the height of the imageView
member of any element of pColorAttachments
, pDepthAttachment
, or pStencilAttachment
that is not VK_NULL_HANDLE must be greater than or equal to the sum of the offset.y
and extent.height
members of each element of pDeviceRenderAreas
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06085",
"text": " If neither pDepthAttachment
or pStencilAttachment
are NULL
and the imageView
member of either structure is not VK_NULL_HANDLE, the imageView
member of each structure must be the same"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06086",
"text": " If neither pDepthAttachment
or pStencilAttachment
are NULL
, and the resolveMode
member of each is not VK_RESOLVE_MODE_NONE
, the resolveImageView
member of each structure must be the same"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_maintenance2,VK_VERSION_1_1)": [
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06096",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, the layout
member of that element of pColorAttachments
must not be VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06097",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, if the resolveMode
member of that element of pColorAttachments
is not VK_RESOLVE_MODE_NONE
, its resolveImageLayout
member must not be VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pDepthAttachment-06098",
"text": " If pDepthAttachment
is not NULL
, pDepthAttachment->imageView
is not VK_NULL_HANDLE, and pDepthAttachment->resolveMode
is not VK_RESOLVE_MODE_NONE
, pDepthAttachment->resolveImageLayout
must not be VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-pStencilAttachment-06099",
"text": " If pStencilAttachment
is not NULL
, pStencilAttachment->imageView
is not VK_NULL_HANDLE, and pStencilAttachment->resolveMode
is not VK_RESOLVE_MODE_NONE
, pStencilAttachment->resolveImageLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_separate_depth_stencil_layouts,VK_VERSION_1_2)": [
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06100",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, the layout
member of that element of pColorAttachments
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderingInfo-colorAttachmentCount-06101",
"text": " If colorAttachmentCount
is not 0
and the imageView
member of an element of pColorAttachments
is not VK_NULL_HANDLE, if the resolveMode
member of that element of pColorAttachments
is not VK_RESOLVE_MODE_NONE
, its resolveImageLayout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06107",
"text": " If the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, and the fragmentDensityMapNonSubsampledImages
feature is not enabled, valid imageView
and resolveImageView
members of pDepthAttachment
, pStencilAttachment
, and each element of pColorAttachments
must be a VkImageView created with VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06116",
"text": " If the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, it must not be equal to the imageView
or resolveImageView
member of pDepthAttachment
, pStencilAttachment
, or any element of pColorAttachments
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06108",
"text": " If the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, and viewMask
is not 0
, imageView
must have a layerCount
greater than or equal to the index of the most significant bit in viewMask
"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06109",
"text": " If the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, and viewMask
is 0
, imageView
must have a layerCount
equal to 1
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06110",
"text": " If the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a width greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06111",
"text": " If the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderingInfo-pNext-06112",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0 and the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a width greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{x}+renderArea_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06113",
"text": " If the pNext
chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount
member is not 0, and the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\) for each element of pDeviceRenderAreas
"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06114",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0 and the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06115",
"text": " If the pNext
chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount
member is not 0, and the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a height greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\) for each element of pDeviceRenderAreas
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)+!(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06117",
"text": " If the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a width greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06118",
"text": " If the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\)"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderingInfo-pNext-06119",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0 and the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a width greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{x}+renderArea_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06120",
"text": " If the pNext
chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount
member is not 0, and the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a width greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{x}+pDeviceRenderAreas_{width}}{shadingRateAttachmentTexelSize_{width}}}\\right\\rceil\\) for each element of pDeviceRenderAreas
"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06121",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0 and the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a height greater than or equal to \\(\\left\\lceil{\\frac{renderArea_{y}+renderArea_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkRenderingInfo-pNext-06122",
"text": " If the pNext
chain contains a VkDeviceGroupRenderPassBeginInfo structure, its deviceRenderAreaCount
member is not 0, and the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, imageView
must have a height greater than or equal to \\(\\left\\lceil{\\frac{pDeviceRenderAreas_{y}+pDeviceRenderAreas_{height}}{shadingRateAttachmentTexelSize_{height}}}\\right\\rceil\\) for each element of pDeviceRenderAreas
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06123",
"text": " If the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, and viewMask
is 0
, imageView
must have a layerCount
that is either equal to 1
or greater than or equal to layerCount
"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06124",
"text": " If the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, and viewMask
is not 0
, imageView
must have a layerCount
that either equal to 1
or greater than or equal to the index of the most significant bit in viewMask
"
},
{
"vuid": "VUID-VkRenderingInfo-imageView-06125",
"text": " If the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, it must not be equal to the imageView
or resolveImageView
member of pDepthAttachment
, pStencilAttachment
, or any element of pColorAttachments
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderingInfo-imageView-06126",
"text": " If the imageView
member of a VkRenderingFragmentShadingRateAttachmentInfoKHR structure included in the pNext
chain is not VK_NULL_HANDLE, it must not be equal to the imageView
member of a VkRenderingFragmentDensityMapAttachmentInfoEXT structure included in the pNext
chain"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkRenderingInfo-viewMask-06128",
"text": " The index of the most significant bit in viewMask
must be less than maxMultiviewViewCount
"
}
]
},
"VkRenderingAttachmentInfo": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06129",
"text": " If imageView
is not VK_NULL_HANDLE and has a non-integer color format, resolveMode
must be VK_RESOLVE_MODE_NONE
or VK_RESOLVE_MODE_AVERAGE_BIT
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06130",
"text": " If imageView
is not VK_NULL_HANDLE and has an integer color format, resolveMode
must be VK_RESOLVE_MODE_NONE
or VK_RESOLVE_MODE_SAMPLE_ZERO_BIT
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06864",
"text": " If imageView
is not VK_NULL_HANDLE, resolveImageView
is not VK_NULL_HANDLE, and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageView
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06865",
"text": " If imageView
is not VK_NULL_HANDLE, resolveImageView
is not VK_NULL_HANDLE, and resolveMode
is not VK_RESOLVE_MODE_NONE
, imageView
and resolveImageView
must have the same VkFormat"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06135",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06136",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-resolveMode-parameter",
"text": " If resolveMode
is not 0
, resolveMode
must be a valid VkResolveModeFlagBits value"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-resolveImageView-parameter",
"text": " If resolveImageView
is not VK_NULL_HANDLE, resolveImageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-resolveImageLayout-parameter",
"text": " resolveImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-loadOp-parameter",
"text": " loadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-storeOp-parameter",
"text": " storeOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-clearValue-parameter",
"text": " clearValue
must be a valid VkClearValue union"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-commonparent",
"text": " Both of imageView
, and resolveImageView
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06132",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, imageView
must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06860",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageView
must not be VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06861",
"text": " If imageView
is not VK_NULL_HANDLE, resolveMode
is not VK_RESOLVE_MODE_NONE
, and the pNext
chain of VkRenderingInfo does not includes a VkMultisampledRenderToSingleSampledInfoEXT structure with the multisampledRenderToSingleSampledEnable
field equal to VK_TRUE
, imageView
must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06862",
"text": " If imageView
is not VK_NULL_HANDLE, resolveMode
is not VK_RESOLVE_MODE_NONE
, and the pNext
chain of VkRenderingInfo does not includes a VkMultisampledRenderToSingleSampledInfoEXT structure with the multisampledRenderToSingleSampledEnable
field equal to VK_TRUE
, resolveImageView
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06863",
"text": " If imageView
is not VK_NULL_HANDLE, resolveMode
is not VK_RESOLVE_MODE_NONE
, the pNext
chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with the multisampledRenderToSingleSampledEnable
field equal to VK_TRUE
, and imageView
has a sample count of VK_SAMPLE_COUNT_1_BIT
, resolveImageView
must be VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_separate_depth_stencil_layouts,VK_VERSION_1_2)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06137",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06138",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must not be VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06139",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06140",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must not be VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06141",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06142",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06143",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must not be VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06144",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06145",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must not be VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
"
},
{
"vuid": "VUID-VkRenderingAttachmentInfo-imageView-06146",
"text": " If imageView
is not VK_NULL_HANDLE and resolveMode
is not VK_RESOLVE_MODE_NONE
, resolveImageLayout
must not be VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
"
}
]
},
"VkRenderingFragmentShadingRateAttachmentInfoKHR": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06147",
"text": " If imageView
is not VK_NULL_HANDLE, layout
must be VK_IMAGE_LAYOUT_GENERAL
or VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06148",
"text": " If imageView
is not VK_NULL_HANDLE, it must have been created with VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06149",
"text": " If imageView
is not VK_NULL_HANDLE, shadingRateAttachmentTexelSize.width
must be a power of two value"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06150",
"text": " If imageView
is not VK_NULL_HANDLE, shadingRateAttachmentTexelSize.width
must be less than or equal to maxFragmentShadingRateAttachmentTexelSize.width
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06151",
"text": " If imageView
is not VK_NULL_HANDLE, shadingRateAttachmentTexelSize.width
must be greater than or equal to minFragmentShadingRateAttachmentTexelSize.width
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06152",
"text": " If imageView
is not VK_NULL_HANDLE, shadingRateAttachmentTexelSize.height
must be a power of two value"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06153",
"text": " If imageView
is not VK_NULL_HANDLE, shadingRateAttachmentTexelSize.height
must be less than or equal to maxFragmentShadingRateAttachmentTexelSize.height
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06154",
"text": " If imageView
is not VK_NULL_HANDLE, shadingRateAttachmentTexelSize.height
must be greater than or equal to minFragmentShadingRateAttachmentTexelSize.height
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06155",
"text": " If imageView
is not VK_NULL_HANDLE, the quotient of shadingRateAttachmentTexelSize.width
and shadingRateAttachmentTexelSize.height
must be less than or equal to maxFragmentShadingRateAttachmentTexelSizeAspectRatio
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-06156",
"text": " If imageView
is not VK_NULL_HANDLE, the quotient of shadingRateAttachmentTexelSize.height
and shadingRateAttachmentTexelSize.width
must be less than or equal to maxFragmentShadingRateAttachmentTexelSizeAspectRatio
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-VkRenderingFragmentShadingRateAttachmentInfoKHR-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
}
]
},
"VkRenderingFragmentDensityMapAttachmentInfoEXT": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06157",
"text": " If imageView
is not VK_NULL_HANDLE, layout
must be VK_IMAGE_LAYOUT_GENERAL
or VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
"
},
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06158",
"text": " If imageView
is not VK_NULL_HANDLE, it must have been created with VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
"
},
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06159",
"text": " If imageView
is not VK_NULL_HANDLE, it must not have been created with VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
},
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT
"
},
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-parameter",
"text": " imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkRenderingFragmentDensityMapAttachmentInfoEXT-imageView-06160",
"text": " If imageView
is not VK_NULL_HANDLE, it must have a layerCount
equal to 1
"
}
]
},
"vkCmdEndRendering": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdEndRendering-None-06161",
"text": " The current render pass instance must have been begun with vkCmdBeginRendering"
},
{
"vuid": "VUID-vkCmdEndRendering-commandBuffer-06162",
"text": " The current render pass instance must have been begun in commandBuffer
"
},
{
"vuid": "VUID-vkCmdEndRendering-None-06999",
"text": " If vkCmdBeginQuery
* was called within the render pass, the corresponding vkCmdEndQuery
* must have been called subsequently within the same subpass."
},
{
"vuid": "VUID-vkCmdEndRendering-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndRendering-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndRendering-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndRendering-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndRendering-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndRendering-None-06781",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"VkTilePropertiesQCOM": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_QCOM_tile_properties)": [
{
"vuid": "VUID-VkTilePropertiesQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM
"
},
{
"vuid": "VUID-VkTilePropertiesQCOM-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetDynamicRenderingTilePropertiesQCOM": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_QCOM_tile_properties)": [
{
"vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-pRenderingInfo-parameter",
"text": " pRenderingInfo
must be a valid pointer to a valid VkRenderingInfo structure"
},
{
"vuid": "VUID-vkGetDynamicRenderingTilePropertiesQCOM-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkTilePropertiesQCOM structure"
}
]
},
"vkCreateRenderPass": {
"core": [
{
"vuid": "VUID-vkCreateRenderPass-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkRenderPassCreateInfo structure"
},
{
"vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
"text": " pRenderPass
must be a valid pointer to a VkRenderPass handle"
}
]
},
"VkRenderPassCreateInfo": {
"core": [
{
"vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
"text": " If the attachment
member of any element of pInputAttachments
, pColorAttachments
, pResolveAttachments
or pDepthStencilAttachment
, or any element of pPreserveAttachments
in any element of pSubpasses
is not VK_ATTACHMENT_UNUSED
, then it must be less than attachmentCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
"text": " For any member of pAttachments
with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
"text": " For any member of pAttachments
with a stencilLoadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
"text": " For any element of pDependencies
, if the srcSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the srcStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the source subpass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
"text": " For any element of pDependencies
, if the dstSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the dstStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the destination subpass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-06866",
"text": " For any element of pDependencies
, if its srcSubpass
is not VK_SUBPASS_EXTERNAL
, it must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pDependencies-06867",
"text": " For any element of pDependencies
, if its dstSubpass
is not VK_SUBPASS_EXTERNAL
, it must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkRenderPassFragmentDensityMapCreateInfoEXT, VkRenderPassInputAttachmentAspectCreateInfo, or VkRenderPassMultiviewCreateInfo"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkRenderPassCreateFlagBits values"
},
{
"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_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderPassCreateInfo-fragmentDensityMapAttachment-06471",
"text": " If the pNext chain includes a VkRenderPassFragmentDensityMapCreateInfoEXT structure and the fragmentDensityMapAttachment
member is not VK_ATTACHMENT_UNUSED
, then attachment
must be less than attachmentCount
"
}
],
"(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 a VkRenderPassInputAttachmentAspectCreateInfo structure, 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 a VkRenderPassInputAttachmentAspectCreateInfo structure, the inputAttachmentIndex
member of each element of its pAspectReferences
member must be less than the value of inputAttachmentCount
in the element of pSubpasses
identified by its subpass
member"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
"text": " If the pNext
chain includes a VkRenderPassInputAttachmentAspectCreateInfo structure, for any element of the pInputAttachments
member of any element of pSubpasses
where the attachment
member is not VK_ATTACHMENT_UNUSED
, the aspectMask
member of the corresponding element of VkRenderPassInputAttachmentAspectCreateInfo::pAspectReferences
must only include aspects that are present in images of the format specified by the element of pAttachments
at attachment
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
"text": " If the pNext
chain includes a VkRenderPassMultiviewCreateInfo structure, 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 a VkRenderPassMultiviewCreateInfo structure, if its dependencyCount
member is not zero, it must be equal to dependencyCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
"text": " If the pNext
chain includes a VkRenderPassMultiviewCreateInfo structure, for each non-zero element of pViewOffsets
, the srcSubpass
and dstSubpass
members of pDependencies
at the same index must not be equal"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
"text": " If the pNext
chain includes a VkRenderPassMultiviewCreateInfo structure, for any element of pDependencies
with a dependencyFlags
member that does not include VK_DEPENDENCY_VIEW_LOCAL_BIT
, the corresponding element of the pViewOffsets
member of that VkRenderPassMultiviewCreateInfo instance must be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
"text": " If the pNext
chain includes a VkRenderPassMultiviewCreateInfo structure, elements of its pViewMasks
member must either all be 0
, or all not be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
"text": " If the pNext
chain includes a VkRenderPassMultiviewCreateInfo structure, and each element of its pViewMasks
member is 0
, the dependencyFlags
member of each element of pDependencies
must not include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
"text": " If the pNext
chain includes a VkRenderPassMultiviewCreateInfo structure, and each element of its pViewMasks
member is 0
, its correlationMaskCount
member must be 0
"
}
]
},
"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-multiview-06555",
"text": " If the multiview
feature is not enabled, each element of pViewMasks
must be 0
"
},
{
"vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-06697",
"text": " The index of the most significant bit in each element of pViewMasks
must be less than maxMultiviewViewCount
"
},
{
"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"
}
]
},
"VkMultiviewPerViewAttributesInfoNVX": {
"(VK_NVX_multiview_per_view_attributes)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkMultiviewPerViewAttributesInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX
"
}
]
},
"VkRenderPassFragmentDensityMapCreateInfoEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must not be an element of VkSubpassDescription
::pInputAttachments
, VkSubpassDescription
::pColorAttachments
, VkSubpassDescription
::pResolveAttachments
, VkSubpassDescription
::pDepthStencilAttachment
, or VkSubpassDescription
::pPreserveAttachments
for any subpass"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, layout
must be equal to VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT
, or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must reference an attachment with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_LOAD
or VK_ATTACHMENT_LOAD_OP_DONT_CARE
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
"text": " If fragmentDensityMapAttachment
is not VK_ATTACHMENT_UNUSED
, fragmentDensityMapAttachment
must reference an attachment with a storeOp
equal to VK_ATTACHMENT_STORE_OP_DONT_CARE
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
"text": " fragmentDensityMapAttachment
must be a valid VkAttachmentReference structure"
}
]
},
"VkAttachmentDescription": {
"core": [
{
"vuid": "VUID-VkAttachmentDescription-format-06698",
"text": " format
must not be VK_FORMAT_UNDEFINED"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06699",
"text": " If format
includes a color or depth aspect and loadOp
is VK_ATTACHMENT_LOAD_OP_LOAD
, then initialLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
"
},
{
"vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
"text": " finalLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03280",
"text": " If format
is a color format, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03281",
"text": " If format
is a depth/stencil format, initialLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03282",
"text": " If format
is a color format, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03283",
"text": " If format
is a depth/stencil format, finalLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06700",
"text": " If format
includes a stencil aspect and stencilLoadOp
is VK_ATTACHMENT_LOAD_OP_LOAD
, then initialLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03292",
"text": " If format
is a depth/stencil format which includes only the stencil aspect, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03293",
"text": " If format
is a depth/stencil format which includes only the stencil aspect, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06242",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06243",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
"
},
{
"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"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkAttachmentDescription-format-06487",
"text": " If format
is a color format, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06488",
"text": " If format
is a color format, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
}
],
"(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284",
"text": " If the separateDepthStencilLayouts
feature is not enabled, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
,"
},
{
"vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285",
"text": " If the separateDepthStencilLayouts
feature is not enabled, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
,"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03286",
"text": " If format
is a color format, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03287",
"text": " If format
is a color format, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06906",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, initialLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-06907",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, finalLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03290",
"text": " If format
is a depth/stencil format which includes only the depth aspect, initialLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription-format-03291",
"text": " If format
is a depth/stencil format which includes only the depth aspect, finalLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
}
],
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkAttachmentDescription-synchronization2-06908",
"text": " If the synchronization2
feature is not enabled, initialLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkAttachmentDescription-synchronization2-06909",
"text": " If the synchronization2
feature is not enabled, finalLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkAttachmentDescription-attachmentFeedbackLoopLayout-07309",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, initialLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
},
{
"vuid": "VUID-VkAttachmentDescription-attachmentFeedbackLoopLayout-07310",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, finalLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
}
]
},
"VkRenderPassInputAttachmentAspectCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO
"
},
{
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
"text": " pAspectReferences
must be a valid pointer to an array of aspectReferenceCount
valid VkInputAttachmentAspectReference structures"
},
{
"vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
"text": " aspectReferenceCount
must be greater than 0
"
}
]
},
"VkInputAttachmentAspectReference": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
for any index i"
}
]
},
"VkSubpassDescription": {
"core": [
{
"vuid": "VUID-VkSubpassDescription-attachment-06912",
"text": " If the attachment
member of an element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06913",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06914",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06915",
"text": " If the attachment
member of pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
, ts layout
member must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
"text": " colorAttachmentCount
must be less than or equal to VkPhysicalDeviceLimits
::maxColorAttachments
"
},
{
"vuid": "VUID-VkSubpassDescription-loadOp-00846",
"text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp
must not be VK_ATTACHMENT_LOAD_OP_CLEAR
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that is not VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that is not VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
"text": " If pResolveAttachments
is not NULL
, each resolve attachment that is not VK_ATTACHMENT_UNUSED
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
"text": " If pResolveAttachments
is not NULL
, each resolve attachment that is not VK_ATTACHMENT_UNUSED
must have the same VkFormat as its corresponding color attachment"
},
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-06868",
"text": " If neither the VK_AMD_mixed_attachment_samples
extension nor the VK_NV_framebuffer_mixed_samples
extension is enabled, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
"text": " All attachments in pInputAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
"text": " All attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
"text": " All attachments in pResolveAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
"text": " If pDepthStencilAttachment
is not NULL
and the attachment is not VK_ATTACHMENT_UNUSED
then it must have an image format whose potential format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
"text": " If neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, and if pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
and any attachments in pColorAttachments
are not VK_ATTACHMENT_UNUSED
, they must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-00853",
"text": " Each element of pPreserveAttachments
must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
"text": " Each element of pPreserveAttachments
must not also be an element of any other member of the subpass description"
},
{
"vuid": "VUID-VkSubpassDescription-layout-02519",
"text": " If any attachment is used by more than one VkAttachmentReference member, then each use must use the same layout
"
},
{
"vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-04438",
"text": " pDepthStencilAttachment
and pColorAttachments
must not contain references to the same attachment"
},
{
"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_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkSubpassDescription-attachment-06916",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06917",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
}
],
"(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkSubpassDescription-attachment-06918",
"text": " If the attachment
member of an element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06919",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06920",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
}
],
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubpassDescription-attachment-06921",
"text": " If the attachment
member of an element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06922",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkSubpassDescription-attachment-06923",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"!(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
"text": " pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
"
}
],
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSubpassDescription-pipelineBindPoint-04952",
"text": " pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
or VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
"
}
],
"(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkSubpassDescription-linearColorAttachment-06496",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, all attachments in pInputAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDescription-linearColorAttachment-06497",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDescription-linearColorAttachment-06498",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, all attachments in pResolveAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
}
],
"(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
"text": " If the VK_AMD_mixed_attachment_samples
extension is enabled, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment
if it is not VK_ATTACHMENT_UNUSED
"
}
],
"(VK_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
"
}
],
"(VK_QCOM_render_pass_shader_resolve)": [
{
"vuid": "VUID-VkSubpassDescription-flags-03341",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, and if pResolveAttachments
is not NULL
, then each resolve attachment must be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription-flags-03343",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, then the subpass must be the last subpass in a subpass dependency chain"
}
],
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-VkSubpassDescription-pInputAttachments-02868",
"text": " If the render pass is created with VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM
each of the elements of pInputAttachments
must be VK_ATTACHMENT_UNUSED
"
}
]
},
"VkAttachmentReference": {
"core": [
{
"vuid": "VUID-VkAttachmentReference-layout-03077",
"text": " If attachment
is not VK_ATTACHMENT_UNUSED
, layout
must not be VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_PREINITIALIZED
, or VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
"
},
{
"vuid": "VUID-VkAttachmentReference-layout-parameter",
"text": " layout
must be a valid VkImageLayout value"
}
],
"(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentReference-separateDepthStencilLayouts-03313",
"text": " If the separateDepthStencilLayouts
feature is not enabled, and attachment
is not VK_ATTACHMENT_UNUSED
, layout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
,"
}
],
"(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkAttachmentReference-synchronization2-06910",
"text": " If the synchronization2
feature is not enabled, layout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkAttachmentReference-attachmentFeedbackLoopLayout-07311",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, layout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
}
]
},
"VkSubpassDependency": {
"core": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname: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-06809",
"text": " If srcSubpass
is equal to dstSubpass
and srcStageMask
includes a framebuffer-space stage, dstStageMask
must only contain framebuffer-space stages"
},
{
"vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
"text": " Any access flag included in srcAccessMask
must be supported by one of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
"text": " Any access flag included in dstAccessMask
must be supported by one of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
"text": " If srcSubpass
equals dstSubpass
, and srcStageMask
and dstStageMask
both include a framebuffer-space stage, then dependencyFlags
must include VK_DEPENDENCY_BY_REGION_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"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_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubpassDependency-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkSubpassDependency-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubpassDependency-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkSubpassDependency-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:dstStageMask must not be 0
"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubpassDependency-srcStageMask-04996",
"text": " pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency-dstStageMask-04996",
"text": " pname:dstStageMask must not be 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, srcSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, dstSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
"text": " If srcSubpass
equals dstSubpass
and that subpass has more than one bit set in the view mask, then dependencyFlags
must include VK_DEPENDENCY_VIEW_LOCAL_BIT
"
}
]
},
"vkCreateRenderPass2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCreateRenderPass2-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateRenderPass2-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkRenderPassCreateInfo2 structure"
},
{
"vuid": "VUID-vkCreateRenderPass2-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateRenderPass2-pRenderPass-parameter",
"text": " pRenderPass
must be a valid pointer to a VkRenderPass handle"
}
]
},
"VkRenderPassCreateInfo2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-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-VkRenderPassCreateInfo2-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 VkAttachmentDescription2
structures describing them must include VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
in flags
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-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
, then it must be less than attachmentCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02522",
"text": " For any member of pAttachments
with a loadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02523",
"text": " For any member of pAttachments
with a stencilLoadOp
equal to VK_ATTACHMENT_LOAD_OP_CLEAR
, the first use of that attachment must not specify a layout
equal to VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03054",
"text": " For any element of pDependencies
, if the srcSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the srcStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the source subpass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03055",
"text": " For any element of pDependencies
, if the dstSubpass
is not VK_SUBPASS_EXTERNAL
, all stage flags included in the dstStageMask
member of that dependency must be a pipeline stage supported by the pipeline identified by the pipelineBindPoint
member of the destination subpass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-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-VkRenderPassCreateInfo2-viewMask-03057",
"text": " If the VkSubpassDescription2::viewMask
member of all elements of pSubpasses
is 0
, correlatedViewMaskCount
must be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03058",
"text": " The VkSubpassDescription2::viewMask
member of all elements of pSubpasses
must either all be 0
, or all not be 0
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03059",
"text": " If the VkSubpassDescription2::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-VkRenderPassCreateInfo2-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-VkRenderPassCreateInfo2-attachment-02525",
"text": " If the attachment
member of any element of the pInputAttachments
member of any element of pSubpasses
is not VK_ATTACHMENT_UNUSED
, the aspectMask
member of that element of pInputAttachments
must only include aspects that are present in images of the format specified by the element of pAttachments
specified by attachment
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-srcSubpass-02526",
"text": " The srcSubpass
member of each element of pDependencies
must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-dstSubpass-02527",
"text": " The dstSubpass
member of each element of pDependencies
must be less than subpassCount
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-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 VkRenderPassCreationControlEXT, VkRenderPassCreationFeedbackCreateInfoEXT, or VkRenderPassFragmentDensityMapCreateInfoEXT"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-flags-parameter",
"text": " flags
must be a valid combination of VkRenderPassCreateFlagBits values"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkAttachmentDescription2 structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-parameter",
"text": " pSubpasses
must be a valid pointer to an array of subpassCount
valid VkSubpassDescription2 structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-parameter",
"text": " If dependencyCount
is not 0
, pDependencies
must be a valid pointer to an array of dependencyCount
valid VkSubpassDependency2 structures"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter",
"text": " If correlatedViewMaskCount
is not 0
, pCorrelatedViewMasks
must be a valid pointer to an array of correlatedViewMaskCount
uint32_t
values"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-subpassCount-arraylength",
"text": " subpassCount
must be greater than 0
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-fragmentDensityMapAttachment-06472",
"text": " If the pNext chain includes a VkRenderPassFragmentDensityMapCreateInfoEXT structure and the fragmentDensityMapAttachment
member is not VK_ATTACHMENT_UNUSED
, then attachment
must be less than attachmentCount
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-06473",
"text": " If the pSubpasses
pNext chain includes a VkSubpassDescriptionDepthStencilResolve structure and the pDepthStencilResolveAttachment
member is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, then attachment
must be less than attachmentCount
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-04585",
"text": " If any element of pAttachments
is used as a fragment shading rate attachment in any subpass, it must not be used as any other attachment in the render pass"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-04586",
"text": " If any element of pAttachments
is used as a fragment shading rate attachment in any subpass, it must have an image format whose potential format features contain VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)+(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-flags-04521",
"text": " If flags
includes VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM
, an element of pSubpasses
includes an instance of VkFragmentShadingRateAttachmentInfoKHR in its pNext
chain, and the pFragmentShadingRateAttachment
member of that structure is not equal to NULL
, the attachment
member of pFragmentShadingRateAttachment
must be VK_ATTACHMENT_UNUSED
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_QCOM_render_pass_shader_resolve)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-rasterizationSamples-04905",
"text": " If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve extension
is enabled, and if subpass has any input attachments, and if the subpass description contains VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
, then the sample count of the input attachments must equal rasterizationSamples
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-sampleShadingEnable-04906",
"text": " If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve
extension is enabled, and if the subpass description contains VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
, then sampleShadingEnable
must be false"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-flags-04907",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, and if pResolveAttachments
is not NULL
, then each resolve attachment must be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-flags-04908",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, and if pDepthStencilResolveAttachment
is not NULL
, then the depth/stencil resolve attachment must be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-flags-04909",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, then the subpass must be the last subpass in a subpass dependency chain"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkRenderPassCreateInfo2-attachment-06244",
"text": " If the attachment
member of the pDepthStencilAttachment
member of an element of pSubpasses
is not VK_ATTACHMENT_UNUSED
, the layout
member of that same structure is either VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, and the pNext
chain of that structure does not include a VkAttachmentReferenceStencilLayout structure, then the element of pAttachments
with an index equal to attachment
must not have a format
that includes both depth and stencil aspects"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-attachment-06245",
"text": " If the attachment
member of the pDepthStencilAttachment
member of an element of pSubpasses
is not VK_ATTACHMENT_UNUSED
and the layout
member of that same structure is either VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, then the element of pAttachments
with an index equal to attachment
must have a format
that includes only a stencil aspect"
},
{
"vuid": "VUID-VkRenderPassCreateInfo2-attachment-06246",
"text": " If the attachment
member of the pDepthStencilAttachment
member of an element of pSubpasses
is not VK_ATTACHMENT_UNUSED
and the layout
member of that same structure is either VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, then the element of pAttachments
with an index equal to attachment
must not have a format
that includes only a stencil aspect"
}
]
},
"VkAttachmentDescription2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkAttachmentDescription2-format-06698",
"text": " format
must not be VK_FORMAT_UNDEFINED"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06699",
"text": " If format
includes a color or depth aspect and loadOp
is VK_ATTACHMENT_LOAD_OP_LOAD
, then initialLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
"
},
{
"vuid": "VUID-VkAttachmentDescription2-finalLayout-00843",
"text": " finalLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03280",
"text": " If format
is a color format, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03281",
"text": " If format
is a depth/stencil format, initialLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03282",
"text": " If format
is a color format, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03283",
"text": " If format
is a depth/stencil format, finalLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2
"
},
{
"vuid": "VUID-VkAttachmentDescription2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkAttachmentDescriptionStencilLayout"
},
{
"vuid": "VUID-VkAttachmentDescription2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkAttachmentDescription2-flags-parameter",
"text": " flags
must be a valid combination of VkAttachmentDescriptionFlagBits values"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkAttachmentDescription2-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkAttachmentDescription2-loadOp-parameter",
"text": " loadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2-storeOp-parameter",
"text": " storeOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2-stencilLoadOp-parameter",
"text": " stencilLoadOp
must be a valid VkAttachmentLoadOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2-stencilStoreOp-parameter",
"text": " stencilStoreOp
must be a valid VkAttachmentStoreOp value"
},
{
"vuid": "VUID-VkAttachmentDescription2-initialLayout-parameter",
"text": " initialLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkAttachmentDescription2-finalLayout-parameter",
"text": " finalLayout
must be a valid VkImageLayout value"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkAttachmentDescription2-format-06487",
"text": " If format
is a color format, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06488",
"text": " If format
is a color format, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03284",
"text": " If the separateDepthStencilLayouts
feature is not enabled, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
,"
},
{
"vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03285",
"text": " If the separateDepthStencilLayouts
feature is not enabled, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
,"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03286",
"text": " If format
is a color format, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03287",
"text": " If format
is a color format, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06906",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, initialLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06907",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, finalLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03290",
"text": " If format
is a depth/stencil format which includes only the depth aspect, initialLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-03291",
"text": " If format
is a depth/stencil format which includes only the depth aspect, finalLayout
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-pNext-06704",
"text": " If the pNext
chain does not include a VkAttachmentDescriptionStencilLayout structure, format
includes a stencil aspect, and stencilLoadOp
is VK_ATTACHMENT_LOAD_OP_LOAD
, then initialLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
"
},
{
"vuid": "VUID-VkAttachmentDescription2-pNext-06705",
"text": " If the pNext
chain does includes a VkAttachmentDescriptionStencilLayout structure, format
includes a stencil aspect, and stencilLoadOp
is VK_ATTACHMENT_LOAD_OP_LOAD
, then VkAttachmentDescriptionStencilLayout::stencilInitialLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06249",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, and initialLayout
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, the pNext
chain must include a VkAttachmentDescriptionStencilLayout structure"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06250",
"text": " If format
is a depth/stencil format which includes both depth and stencil aspects, and finalLayout
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, the pNext
chain must include a VkAttachmentDescriptionStencilLayout structure"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06247",
"text": " If the pNext
chain does not include a VkAttachmentDescriptionStencilLayout structure and format
only includes a stencil aspect, initialLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescription2-format-06248",
"text": " If the pNext
chain does not include a VkAttachmentDescriptionStencilLayout structure and format
only includes a stencil aspect, finalLayout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkAttachmentDescription2-synchronization2-06908",
"text": " If the synchronization2
feature is not enabled, initialLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkAttachmentDescription2-synchronization2-06909",
"text": " If the synchronization2
feature is not enabled, finalLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkAttachmentDescription2-attachmentFeedbackLoopLayout-07309",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, initialLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
},
{
"vuid": "VUID-VkAttachmentDescription2-attachmentFeedbackLoopLayout-07310",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, finalLayout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+!(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentDescription2-format-06703",
"text": " If format
includes a stencil aspect and stencilLoadOp
is VK_ATTACHMENT_LOAD_OP_LOAD
, then initialLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
"
}
]
},
"VkAttachmentDescriptionStencilLayout": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308",
"text": " stencilInitialLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309",
"text": " stencilFinalLayout
must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310",
"text": " stencilFinalLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
or VK_IMAGE_LAYOUT_PREINITIALIZED
"
},
{
"vuid": "VUID-VkAttachmentDescriptionStencilLayout-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT
"
},
{
"vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter",
"text": " stencilInitialLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter",
"text": " stencilFinalLayout
must be a valid VkImageLayout value"
}
]
},
"VkSubpassDescription2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassDescription2-attachment-06912",
"text": " If the attachment
member of an element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06913",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06914",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06915",
"text": " If the attachment
member of pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
, ts layout
member must not be VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-colorAttachmentCount-03063",
"text": " colorAttachmentCount
must be less than or equal to VkPhysicalDeviceLimits
::maxColorAttachments
"
},
{
"vuid": "VUID-VkSubpassDescription2-loadOp-03064",
"text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp
must not be VK_ATTACHMENT_LOAD_OP_CLEAR
"
},
{
"vuid": "VUID-VkSubpassDescription2-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-VkSubpassDescription2-pResolveAttachments-03066",
"text": " If pResolveAttachments
is not NULL
, for each resolve attachment that is not VK_ATTACHMENT_UNUSED
, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03067",
"text": " If pResolveAttachments
is not NULL
, each resolve attachment that is not VK_ATTACHMENT_UNUSED
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03068",
"text": " Any given element of pResolveAttachments
must have the same VkFormat as its corresponding color attachment"
},
{
"vuid": "VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06869",
"text": " If none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription2-pInputAttachments-02897",
"text": " All attachments in pInputAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-pColorAttachments-02898",
"text": " All attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-pResolveAttachments-02899",
"text": " All attachments in pResolveAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-02900",
"text": " If pDepthStencilAttachment
is not NULL
and the attachment is not VK_ATTACHMENT_UNUSED
then it must have an image format whose potential format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-multisampledRenderToSingleSampled-06872",
"text": " If none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, all attachments in pDepthStencilAttachment
or pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have the same sample count"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-03073",
"text": " Each element of pPreserveAttachments
must not be VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-03074",
"text": " Any given element of pPreserveAttachments
must not also be an element of any other member of the subpass description"
},
{
"vuid": "VUID-VkSubpassDescription2-layout-02528",
"text": " If any attachment is used by more than one VkAttachmentReference2 member, then each use must use the same layout
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-02799",
"text": " If the attachment
member of any element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, then the aspectMask
member must be a valid combination of VkImageAspectFlagBits"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-02800",
"text": " If the attachment
member of any element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, then the aspectMask
member must not be 0
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-02801",
"text": " If the attachment
member of any element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, then the aspectMask
member must not include VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-04440",
"text": " An attachment must not be used in both pDepthStencilAttachment
and pColorAttachments
"
},
{
"vuid": "VUID-VkSubpassDescription2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2
"
},
{
"vuid": "VUID-VkSubpassDescription2-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 VkFragmentShadingRateAttachmentInfoKHR, VkMultisampledRenderToSingleSampledInfoEXT, VkRenderPassCreationControlEXT, VkRenderPassSubpassFeedbackCreateInfoEXT, or VkSubpassDescriptionDepthStencilResolve"
},
{
"vuid": "VUID-VkSubpassDescription2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSubpassDescription2-flags-parameter",
"text": " flags
must be a valid combination of VkSubpassDescriptionFlagBits values"
},
{
"vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkSubpassDescription2-pInputAttachments-parameter",
"text": " If inputAttachmentCount
is not 0
, pInputAttachments
must be a valid pointer to an array of inputAttachmentCount
valid VkAttachmentReference2 structures"
},
{
"vuid": "VUID-VkSubpassDescription2-pColorAttachments-parameter",
"text": " If colorAttachmentCount
is not 0
, pColorAttachments
must be a valid pointer to an array of colorAttachmentCount
valid VkAttachmentReference2 structures"
},
{
"vuid": "VUID-VkSubpassDescription2-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 VkAttachmentReference2 structures"
},
{
"vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter",
"text": " If pDepthStencilAttachment
is not NULL
, pDepthStencilAttachment
must be a valid pointer to a valid VkAttachmentReference2 structure"
},
{
"vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-parameter",
"text": " If preserveAttachmentCount
is not 0
, pPreserveAttachments
must be a valid pointer to an array of preserveAttachmentCount
uint32_t
values"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkSubpassDescription2-attachment-06916",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06917",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkSubpassDescription2-attachment-06918",
"text": " If the attachment
member of an element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06919",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06920",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06251",
"text": " If the attachment
member of pDepthStencilAttachment
is not VK_ATTACHMENT_UNUSED
and its pNext
chain includes a VkAttachmentDescriptionStencilLayout structure, the layout
member of pDepthStencilAttachment
must not be VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubpassDescription2-attachment-06921",
"text": " If the attachment
member of an element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06922",
"text": " If the attachment
member of an element of pColorAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkSubpassDescription2-attachment-06923",
"text": " If the attachment
member of an element of pResolveAttachments
is not VK_ATTACHMENT_UNUSED
, its layout
member must not be VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+!(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-03062",
"text": " pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-04953",
"text": " pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
or VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkSubpassDescription2-linearColorAttachment-06499",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, all attachments in pInputAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDescription2-linearColorAttachment-06500",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDescription2-linearColorAttachment-06501",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, all attachments in pResolveAttachments
that are not VK_ATTACHMENT_UNUSED
must have image formats whose potential format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkSubpassDescription2-pColorAttachments-03070",
"text": " If the VK_AMD_mixed_attachment_samples
extension is enabled, all attachments in pColorAttachments
that are not VK_ATTACHMENT_UNUSED
must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment
if it is not VK_ATTACHMENT_UNUSED
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkSubpassDescription2-pNext-06870",
"text": " If the pNext
chain includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable
equal to VK_TRUE
, then all attachments in pColorAttachments
and pDepthStencilAttachment
that are not VK_ATTACHMENT_UNUSED
must have a sample count that is either VK_SAMPLE_COUNT_1_BIT
or equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
"
},
{
"vuid": "VUID-VkSubpassDescription2-pNext-06871",
"text": " If the pNext
chain includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable
equal to VK_TRUE
, and pDepthStencilAttachment
is not NULL
, does not have the value VK_ATTACHMENT_UNUSED
, and has a sample count of VK_SAMPLE_COUNT_1_BIT
, the pNext
chain must also include a VkSubpassDescriptionDepthStencilResolve structure with pDepthStencilResolveAttachment
that is either NULL
or has the value VK_ATTACHMENT_UNUSED
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
{
"vuid": "VUID-VkSubpassDescription2-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
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkSubpassDescription2-attachment-04563",
"text": " If the attachment
member of any element of pInputAttachments
is not VK_ATTACHMENT_UNUSED
, then the aspectMask
member must not include VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
for any index i"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkSubpassDescription2-multiview-06558",
"text": " If the multiview
feature is not enabled, viewMask
must be 0
"
},
{
"vuid": "VUID-VkSubpassDescription2-viewMask-06706",
"text": " The index of the most significant bit in viewMask
must be less than maxMultiviewViewCount
"
}
]
},
"VkSubpassDescriptionDepthStencilResolve": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, pDepthStencilAttachment
must not be NULL
or have the value VK_ATTACHMENT_UNUSED
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, pDepthStencilAttachment
must not have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, pDepthStencilResolveAttachment
must have a sample count of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
then it must have an image format whose potential format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
and VkFormat of pDepthStencilResolveAttachment
has a depth component, then the VkFormat of pDepthStencilAttachment
must have a depth component with the same number of bits and numerical type"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, and VkFormat of pDepthStencilResolveAttachment
has a stencil component, then the VkFormat of pDepthStencilAttachment
must have a stencil component with the same number of bits and numerical type"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, depthResolveMode
and stencilResolveMode
must not both be VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
and the VkFormat of pDepthStencilResolveAttachment
has a depth component, then the value of depthResolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::supportedDepthResolveModes
or VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
and the VkFormat of pDepthStencilResolveAttachment
has a stencil component, then the value of stencilResolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::supportedStencilResolveModes
or VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, the VkFormat of pDepthStencilResolveAttachment
has both depth and stencil components, VkPhysicalDeviceDepthStencilResolveProperties::independentResolve
is VK_FALSE
, and VkPhysicalDeviceDepthStencilResolveProperties::independentResolveNone
is VK_FALSE
, then the values of depthResolveMode
and stencilResolveMode
must be identical"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186",
"text": " If pDepthStencilResolveAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, the VkFormat of pDepthStencilResolveAttachment
has both depth and stencil components, VkPhysicalDeviceDepthStencilResolveProperties::independentResolve
is VK_FALSE
and VkPhysicalDeviceDepthStencilResolveProperties::independentResolveNone
is VK_TRUE
, then the values of depthResolveMode
and stencilResolveMode
must be identical or one of them must be VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter",
"text": " If pDepthStencilResolveAttachment
is not NULL
, pDepthStencilResolveAttachment
must be a valid pointer to a valid VkAttachmentReference2 structure"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06873",
"text": " If the pNext
chain of VkSubpassDescription2 includes a VkMultisampledRenderToSingleSampledInfoEXT
structure, the multisampledRenderToSingleSampledEnable
field is VK_TRUE
, and pDepthStencilAttachment
is not NULL
and does not have the value VK_ATTACHMENT_UNUSED
, depthResolveMode
and stencilResolveMode
must not both be VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06874",
"text": " If the pNext
chain of VkSubpassDescription2 includes a VkMultisampledRenderToSingleSampledInfoEXT
structure whose multisampledRenderToSingleSampledEnable
field is VK_TRUE
, and pDepthStencilAttachment
is not NULL
, does not have the value VK_ATTACHMENT_UNUSED
, and has a VkFormat that has a depth component, then the value of depthResolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::supportedDepthResolveModes
or VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06875",
"text": " If the pNext
chain of VkSubpassDescription2 includes a VkMultisampledRenderToSingleSampledInfoEXT
structure whose multisampledRenderToSingleSampledEnable
field is VK_TRUE
, and pDepthStencilAttachment
is not NULL
, does not have the value VK_ATTACHMENT_UNUSED
, and has a VkFormat with a stencil component, then the value of stencilResolveMode
must be one of the bits set in VkPhysicalDeviceDepthStencilResolveProperties::supportedStencilResolveModes
or VK_RESOLVE_MODE_NONE
"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06876",
"text": " If the pNext
chain of VkSubpassDescription2 includes a VkMultisampledRenderToSingleSampledInfoEXT
structure whose multisampledRenderToSingleSampledEnable
field is VK_TRUE
, pDepthStencilAttachment
is not NULL
, does not have the value VK_ATTACHMENT_UNUSED
, and has a VkFormat with both depth and stencil components, and both VkPhysicalDeviceDepthStencilResolveProperties::independentResolve
and VkPhysicalDeviceDepthStencilResolveProperties::independentResolveNone
are VK_FALSE
, then the values of depthResolveMode
and stencilResolveMode
must be identical"
},
{
"vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pNext-06877",
"text": " If the pNext
chain of VkSubpassDescription2 includes a VkMultisampledRenderToSingleSampledInfoEXT
structure whose multisampledRenderToSingleSampledEnable
field is VK_TRUE
, pDepthStencilAttachment
is not NULL
, does not have the value VK_ATTACHMENT_UNUSED
, and has a VkFormat with both depth and stencil components, VkPhysicalDeviceDepthStencilResolveProperties::independentResolve
is VK_FALSE
, and VkPhysicalDeviceDepthStencilResolveProperties::independentResolveNone
is VK_TRUE
, then the values of depthResolveMode
and stencilResolveMode
must be identical or one of them must be VK_RESOLVE_MODE_NONE
"
}
]
},
"VkFragmentShadingRateAttachmentInfoKHR": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04524",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, its layout
member must be equal to VK_IMAGE_LAYOUT_GENERAL
or VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, shadingRateAttachmentTexelSize.width
must be a power of two value"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04526",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, shadingRateAttachmentTexelSize.width
must be less than or equal to maxFragmentShadingRateAttachmentTexelSize.width
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, shadingRateAttachmentTexelSize.width
must be greater than or equal to minFragmentShadingRateAttachmentTexelSize.width
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, shadingRateAttachmentTexelSize.height
must be a power of two value"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04529",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, shadingRateAttachmentTexelSize.height
must be less than or equal to maxFragmentShadingRateAttachmentTexelSize.height
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, shadingRateAttachmentTexelSize.height
must be greater than or equal to minFragmentShadingRateAttachmentTexelSize.height
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, the quotient of shadingRateAttachmentTexelSize.width
and shadingRateAttachmentTexelSize.height
must be less than or equal to maxFragmentShadingRateAttachmentTexelSizeAspectRatio
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532",
"text": " If pFragmentShadingRateAttachment
is not NULL
and its attachment
member is not VK_ATTACHMENT_UNUSED
, the quotient of shadingRateAttachmentTexelSize.height
and shadingRateAttachmentTexelSize.width
must be less than or equal to maxFragmentShadingRateAttachmentTexelSizeAspectRatio
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR
"
},
{
"vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter",
"text": " If pFragmentShadingRateAttachment
is not NULL
, pFragmentShadingRateAttachment
must be a valid pointer to a valid VkAttachmentReference2 structure"
}
]
},
"VkMultisampledRenderToSingleSampledInfoEXT": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-rasterizationSamples-06878",
"text": " The value of rasterizationSamples
must not be VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT
"
},
{
"vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-rasterizationSamples-parameter",
"text": " rasterizationSamples
must be a valid VkSampleCountFlagBits value"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_multisampled_render_to_single_sampled)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkMultisampledRenderToSingleSampledInfoEXT-pNext-06880",
"text": " If added to the pNext
chain of VkRenderingInfo, each imageView
member of any element of VkRenderingInfo::pColorAttachments
, VkRenderingInfo::pDepthAttachment
, or VkRenderingInfo::pStencilAttachment
that is not VK_NULL_HANDLE must have a format that supports the sample count specified in rasterizationSamples
"
}
]
},
"VkAttachmentReference2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkAttachmentReference2-layout-03077",
"text": " If attachment
is not VK_ATTACHMENT_UNUSED
, layout
must not be VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_PREINITIALIZED
, or VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
"
},
{
"vuid": "VUID-VkAttachmentReference2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2
"
},
{
"vuid": "VUID-VkAttachmentReference2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkAttachmentReferenceStencilLayout"
},
{
"vuid": "VUID-VkAttachmentReference2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkAttachmentReference2-layout-parameter",
"text": " layout
must be a valid VkImageLayout value"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313",
"text": " If the separateDepthStencilLayouts
feature is not enabled, and attachment
is not VK_ATTACHMENT_UNUSED
, layout
must not be VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
,"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkAttachmentReference2-synchronization2-06910",
"text": " If the synchronization2
feature is not enabled, layout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR
or VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkAttachmentReference2-attachmentFeedbackLoopLayout-07311",
"text": " If the attachmentFeedbackLoopLayout
feature is not enabled, layout
must not be VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
"
}
]
},
"VkAttachmentReferenceStencilLayout": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318",
"text": " stencilLayout
must not be VK_IMAGE_LAYOUT_UNDEFINED
, VK_IMAGE_LAYOUT_PREINITIALIZED
, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
"
},
{
"vuid": "VUID-VkAttachmentReferenceStencilLayout-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT
"
},
{
"vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter",
"text": " stencilLayout
must be a valid VkImageLayout value"
}
]
},
"VkSubpassDependency2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04090",
"text": " If the geometryShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04091",
"text": " If the tessellationShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2-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-VkSubpassDependency2-srcSubpass-03085",
"text": " srcSubpass
and dstSubpass
must not both be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency2-srcSubpass-06810",
"text": " If srcSubpass
is equal to dstSubpass
and srcStageMask
includes a framebuffer-space stage, dstStageMask
must only contain framebuffer-space stages"
},
{
"vuid": "VUID-VkSubpassDependency2-srcAccessMask-03088",
"text": " Any access flag included in srcAccessMask
must be supported by one of the pipeline stages in srcStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency2-dstAccessMask-03089",
"text": " Any access flag included in dstAccessMask
must be supported by one of the pipeline stages in dstStageMask
, as specified in the table of supported access types"
},
{
"vuid": "VUID-VkSubpassDependency2-dependencyFlags-03090",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, srcSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency2-dependencyFlags-03091",
"text": " If dependencyFlags
includes VK_DEPENDENCY_VIEW_LOCAL_BIT
, dstSubpass
must not be equal to VK_SUBPASS_EXTERNAL
"
},
{
"vuid": "VUID-VkSubpassDependency2-srcSubpass-02245",
"text": " If srcSubpass
equals dstSubpass
, and srcStageMask
and dstStageMask
both include a framebuffer-space stage, then dependencyFlags
must include VK_DEPENDENCY_BY_REGION_BIT
"
},
{
"vuid": "VUID-VkSubpassDependency2-viewOffset-02530",
"text": " If viewOffset
is not equal to 0
, srcSubpass
must not be equal to dstSubpass
"
},
{
"vuid": "VUID-VkSubpassDependency2-dependencyFlags-03092",
"text": " If dependencyFlags
does not include VK_DEPENDENCY_VIEW_LOCAL_BIT
, viewOffset
must be 0
"
},
{
"vuid": "VUID-VkSubpassDependency2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2
"
},
{
"vuid": "VUID-VkSubpassDependency2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkMemoryBarrier2"
},
{
"vuid": "VUID-VkSubpassDependency2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-parameter",
"text": " srcStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-parameter",
"text": " dstStageMask
must be a valid combination of VkPipelineStageFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2-srcAccessMask-parameter",
"text": " srcAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2-dstAccessMask-parameter",
"text": " dstAccessMask
must be a valid combination of VkAccessFlagBits values"
},
{
"vuid": "VUID-VkSubpassDependency2-dependencyFlags-parameter",
"text": " dependencyFlags
must be a valid combination of VkDependencyFlagBits values"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04092",
"text": " If the conditionalRendering
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04093",
"text": " If the fragmentDensityMap
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04094",
"text": " If the transformFeedback
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04095",
"text": " If the meshShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04096",
"text": " If the taskShader
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04097",
"text": " If the shadingRateImage
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubpassDependency2-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkSubpassDependency2-shadingRateImage-07318",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkSubpassDependency2-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkSubpassDependency2-fragmentShadingRate-07319",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-03937",
"text": " If the synchronization2
feature is not enabled, pname:dstStageMask must not be 0
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkSubpassDependency2-srcStageMask-04996",
"text": " pname:srcStageMask must not be 0
"
},
{
"vuid": "VUID-VkSubpassDependency2-dstStageMask-04996",
"text": " pname:dstStageMask must not be 0
"
}
]
},
"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-pCreateInfo-02777",
"text": " If pCreateInfo->flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, and attachmentCount
is not 0
, each element of pCreateInfo->pAttachments
must have been created on device
"
},
{
"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-flags-02778",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
and attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkImageView handles"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
that is used as a color attachment or resolve attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, 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": " If renderpass
is not VK_NULL_HANDLE, flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, 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": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
must have been created with a VkFormat value that matches the VkFormat specified by the corresponding VkAttachmentDescription
in renderPass
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, 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-flags-04533",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
that is used as an input, color, resolve, or depth/stencil attachment by renderPass
must have been created with a VkImageCreateInfo::extent.width
greater than or equal to width
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04534",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
that is used as an input, color, resolve, or depth/stencil attachment by renderPass
must have been created with a VkImageCreateInfo::extent.height
greater than or equal to height
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04535",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
that is used as an input, color, resolve, or depth/stencil attachment by renderPass
must have been created with a VkImageViewCreateInfo::subresourceRange.layerCount
greater than or equal to layers
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
must only specify a single mip level"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, 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 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 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 maxFramebufferLayers
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04113",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
must have been created with VkImageViewCreateInfo::viewType
not equal to VK_IMAGE_VIEW_TYPE_3D
"
},
{
"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
or a pointer to a valid instance of VkFramebufferAttachmentsCreateInfo"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkFramebufferCreateFlagBits values"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
"text": " renderPass
must be a valid VkRenderPass handle"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-commonparent",
"text": " Both of renderPass
, and the elements of pAttachments
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
that is used as a depth/stencil resolve attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
"text": " Each element of pAttachments
that is used as a fragment density map attachment by renderPass
must not have been created with a flags
value including VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
"text": " If renderPass
has a fragment density map attachment and the fragmentDensityMapNonSubsampledImages
feature is not enabled, each element of pAttachments
must have been created with a flags
value including VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
unless that element is the fragment density map attachment"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, an element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a width at least as large as \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, an element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a height at least as large as \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
}
],
"(VK_EXT_fragment_density_map)+(VK_QCOM_fragment_density_map_offset)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-06502",
"text": " If renderPass
was created with fragment density map offsets other than (0,0), each element of pAttachments
must have been created with a flags
value including VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
."
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-04536",
"text": " If renderPass
was specified with non-zero view masks, each element of pAttachments
that is used as an input, color, resolve, or depth/stencil attachment by renderPass
must have a layerCount
greater than the index of the most significant bit set in any of those view masks"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
"text": " If renderPass
was specified with non-zero view masks, layers
must be 1
"
}
],
"(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02744",
"text": " Each element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a layerCount
equal to 1
"
}
],
"(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746",
"text": " If renderPass
was specified with non-zero view masks, each element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a layerCount
equal to 1
or greater than the index of the most significant bit set in any of those view masks"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747",
"text": " If renderPass
was not specified with non-zero view masks, each element of pAttachments
that is referenced by fragmentDensityMapAttachment
must have a layerCount
equal to 1
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04537",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, and renderPass
was specified with non-zero view masks, each element of pAttachments
that is used as a fragment shading rate attachment by renderPass
must have a layerCount
that is either 1
, or greater than the index of the most significant bit set in any of those view masks"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04538",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, and renderPass
was not specified with non-zero view masks, each element of pAttachments
that is used as a fragment shading rate attachment by renderPass
must have a layerCount
that is either 1
, or greater than layers
"
}
],
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04539",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, an element of pAttachments
that is used as a fragment shading rate attachment must have a width at least as large as {lceil}width
/ texelWidth
{rceil}, where texelWidth
is the largest value of shadingRateAttachmentTexelSize.width
in a VkFragmentShadingRateAttachmentInfoKHR which references that attachment"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04540",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, an element of pAttachments
that is used as a fragment shading rate attachment must have a height at least as large as {lceil}height
/ texelHeight
{rceil}, where texelHeight
is the largest value of shadingRateAttachmentTexelSize.height
in a VkFragmentShadingRateAttachmentInfoKHR which references that attachment"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04548",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of pAttachments
that is used as a fragment shading rate attachment by renderPass
must have been created with a usage
value including VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
"text": " If flags
does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, 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"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03189",
"text": " If the imagelessFramebuffer
feature is not enabled, flags
must not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03190",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the pNext
chain must include a VkFramebufferAttachmentsCreateInfo structure"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03191",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the attachmentImageInfoCount
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain must be equal to either zero or attachmentCount
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04541",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the width
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain that is used as an input, color, resolve or depth/stencil attachment in renderPass
must be greater than or equal to width
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04542",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the height
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain that is used as an input, color, resolve or depth/stencil attachment in renderPass
must be greater than or equal to height
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03201",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the usage
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain that refers to an attachment used as a color attachment or resolve attachment by renderPass
must include VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03202",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the usage
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain that refers to an attachment used as a depth/stencil attachment by renderPass
must include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03204",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the usage
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain that refers to an attachment used as an input attachment by renderPass
must include VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03205",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, at least one element of the pViewFormats
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain must be equal to the corresponding value of VkAttachmentDescription::format
used to create renderPass
"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03196",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the width
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain that is referenced by VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment
in renderPass
must be greater than or equal to \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03197",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the height
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain that is referenced by VkRenderPassFragmentDensityMapCreateInfoEXT::fragmentDensityMapAttachment
in renderPass
must be greater than or equal to \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04543",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the width
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain that is used as a fragment shading rate attachment must be greater than or equal to {lceil}width
/ texelWidth
{rceil}, where texelWidth
is the largest value of shadingRateAttachmentTexelSize.width
in a VkFragmentShadingRateAttachmentInfoKHR which references that attachment"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04544",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the height
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain that is used as a fragment shading rate attachment must be greater than or equal to {lceil}height
/ texelHeight
{rceil}, where texelHeight
is the largest value of shadingRateAttachmentTexelSize.height
in a VkFragmentShadingRateAttachmentInfoKHR which references that attachment"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04545",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the layerCount
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure in the pNext
chain that is used as a fragment shading rate attachment must be either 1
, or greater than or equal to layers
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04587",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
and renderPass
was specified with non-zero view masks, each element of pAttachments
that is used as a fragment shading rate attachment by renderPass
must have a layerCount
that is either 1
, or greater than the index of the most significant bit set in any of those view masks"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-03198",
"text": " If multiview is enabled for renderPass
and flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the layerCount
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain used as an input, color, resolve, or depth/stencil attachment in renderPass
must be greater than the maximum bit index set in the view mask in the subpasses in which it is used in renderPass
"
},
{
"vuid": "VUID-VkFramebufferCreateInfo-renderPass-04546",
"text": " If multiview is not enabled for renderPass
and flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the layerCount
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain used as an input, color, resolve, or depth/stencil attachment in renderPass
must be greater than or equal to layers
"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+!(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04547",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the layerCount
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain used as an input, color, resolve, or depth/stencil attachment in pRenderPass
must be greater than or equal to layers
"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-03203",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the usage
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain that refers to an attachment used as a depth/stencil resolve attachment by renderPass
must include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-flags-04549",
"text": " If flags
includes VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the usage
member of any element of the pAttachmentImageInfos
member of a VkFramebufferAttachmentsCreateInfo structure included in the pNext
chain that refers to an attachment used as a fragment shading rate attachment by renderPass
must include VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkFramebufferCreateInfo-samples-06881",
"text": " If multisampled-render-to-single-sampled is enabled for any subpass, all color, depth/stencil and input attachments used in that subpass which have VkAttachmentDescription
::samples
or VkAttachmentDescription2
::samples
equal to VK_SAMPLE_COUNT_1_BIT
must have been created with VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
in their VkImageCreateInfo::flags
."
},
{
"vuid": "VUID-VkFramebufferCreateInfo-samples-07009",
"text": " If multisampled-render-to-single-sampled is enabled for any subpass, all color, depth/stencil and input attachments used in that subpass which have VkAttachmentDescription
::samples
or VkAttachmentDescription2
::samples
equal to VK_SAMPLE_COUNT_1_BIT
must have a format that supports the sample count specified in VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
"
}
]
},
"VkFramebufferAttachmentsCreateInfo": {
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkFramebufferAttachmentsCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO
"
},
{
"vuid": "VUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter",
"text": " If attachmentImageInfoCount
is not 0
, pAttachmentImageInfos
must be a valid pointer to an array of attachmentImageInfoCount
valid VkFramebufferAttachmentImageInfo structures"
}
]
},
"VkFramebufferAttachmentImageInfo": {
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkFramebufferAttachmentImageInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO
"
},
{
"vuid": "VUID-VkFramebufferAttachmentImageInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkFramebufferAttachmentImageInfo-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkFramebufferAttachmentImageInfo-pViewFormats-parameter",
"text": " If viewFormatCount
is not 0
, pViewFormats
must be a valid pointer to an array of viewFormatCount
valid VkFormat values"
}
]
},
"vkDestroyFramebuffer": {
"core": [
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
"text": " All submitted commands that refer to framebuffer
must have completed execution"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
"text": " If VkAllocationCallbacks
were provided when framebuffer
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
"text": " If no VkAllocationCallbacks
were provided when framebuffer
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyFramebuffer-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
"text": " If framebuffer
is not VK_NULL_HANDLE, framebuffer
must be a valid VkFramebuffer handle"
},
{
"vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
"text": " If framebuffer
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdBeginRenderPass": {
"core": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
"text": " If the initialLayout
member of any 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-06451",
"text": " The srcStageMask
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-dstStageMask-06452",
"text": " The dstStageMask
members of any element of the pDependencies
member of VkRenderPassCreateInfo used to create renderPass
must be supported by the capabilities of the queue family identified by the queueFamilyIndex
member of the VkCommandPoolCreateInfo used to create the command pool which commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
"text": " For any attachment in framebuffer
that is used by renderPass
and is bound to memory locations that are also bound to another attachment used by renderPass
, and if at least one of those uses causes either attachment to be written to, both attachments must have had the VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
set"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
"text": " pRenderPassBegin
must be a valid pointer to a valid VkRenderPassBeginInfo structure"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
"text": " contents
must be a valid VkSubpassContents value"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-02842",
"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_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843",
"text": " If any of the stencilInitialLayout
or stencilFinalLayout
member of the VkAttachmentDescriptionStencilLayout
structures or the stencilLayout
member of the VkAttachmentReferenceStencilLayout
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-07000",
"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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including either the VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
and either the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
or VK_IMAGE_USAGE_SAMPLED_BIT
usage bits."
},
{
"vuid": "VUID-vkCmdBeginRenderPass-initialLayout-07001",
"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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value the VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
usage bit."
}
]
},
"vkCmdBeginRenderPass2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02779",
"text": " Both the framebuffer
and renderPass
members of pRenderPassBegin
must have been created on the same VkDevice that commandBuffer
was allocated on"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03094",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03096",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03097",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_SAMPLED_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03098",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03099",
"text": " If any of the initialLayout
or finalLayout
member of the VkAttachmentDescription
structures or the layout
member of the VkAttachmentReference
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03100",
"text": " If the initialLayout
member of any 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-vkCmdBeginRenderPass2-srcStageMask-06453",
"text": " The srcStageMask
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-vkCmdBeginRenderPass2-dstStageMask-06454",
"text": " The 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-vkCmdBeginRenderPass2-framebuffer-02533",
"text": " For any attachment in framebuffer
that is used by renderPass
and is bound to memory locations that are also bound to another attachment used by renderPass
, and if at least one of those uses causes either attachment to be written to, both attachments must have had the VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
set"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter",
"text": " pRenderPassBegin
must be a valid pointer to a valid VkRenderPassBeginInfo structure"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter",
"text": " pSubpassBeginInfo
must be a valid pointer to a valid VkSubpassBeginInfo structure"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-02844",
"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_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845",
"text": " If any of the stencilInitialLayout
or stencilFinalLayout
member of the VkAttachmentDescriptionStencilLayout
structures or the stencilLayout
member of the VkAttachmentReferenceStencilLayout
structures specified when creating the render pass specified in the renderPass
member of pRenderPassBegin
is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL
, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-07002",
"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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value including either the VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
and either the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
or VK_IMAGE_USAGE_SAMPLED_BIT
usage bits."
},
{
"vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-07003",
"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_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT
then the corresponding attachment image view of the framebuffer specified in the framebuffer
member of pRenderPassBegin
must have been created with a usage
value the VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT
usage bit."
}
]
},
"VkRenderPassBeginInfo": {
"core": [
{
"vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
"text": " clearValueCount
must be greater than the largest attachment index in renderPass
specifying a loadOp
(or stencilLoadOp
, if the attachment has a depth/stencil format) of VK_ATTACHMENT_LOAD_OP_CLEAR
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-04962",
"text": " If clearValueCount
is not 0
, pClearValues
must be a valid pointer to an array of clearValueCount
VkClearValue unions"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
"text": " renderPass
must be compatible with the renderPass
member of the VkFramebufferCreateInfo structure specified when creating framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupRenderPassBeginInfo, VkRenderPassAttachmentBeginInfo, VkRenderPassSampleLocationsBeginInfoEXT, or VkRenderPassTransformBeginInfoQCOM"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
"text": " The sType
value of each struct 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"
}
],
"!(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderPassBeginInfo-renderArea-02846",
"text": " renderArea.offset.x
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderArea-02847",
"text": " renderArea.offset.y
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderArea-02848",
"text": " renderArea.offset.x
+ renderArea.extent.width
must be less than or equal to VkFramebufferCreateInfo::width
the framebuffer
was created with"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-renderArea-02849",
"text": " renderArea.offset.y
+ renderArea.extent.height
must be less than or equal to VkFramebufferCreateInfo::height
the framebuffer
was created with"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02850",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, renderArea.offset.x
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02851",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, renderArea.offset.y
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02852",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, renderArea.offset.x
+ renderArea.extent.width
must be less than or equal to VkFramebufferCreateInfo::width
the framebuffer
was created with"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02853",
"text": " If the pNext
chain does not contain VkDeviceGroupRenderPassBeginInfo or its deviceRenderAreaCount
member is equal to 0, renderArea.offset.y
+ renderArea.extent.height
must be less than or equal to VkFramebufferCreateInfo::height
the framebuffer
was created with"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02856",
"text": " If the pNext
chain contains VkDeviceGroupRenderPassBeginInfo, offset.x
+ extent.width
of each element of pDeviceRenderAreas
must be less than or equal to VkFramebufferCreateInfo::width
the framebuffer
was created with"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02857",
"text": " If the pNext
chain contains VkDeviceGroupRenderPassBeginInfo, offset.y
+ extent.height
of each element of pDeviceRenderAreas
must be less than or equal to VkFramebufferCreateInfo::height
the framebuffer
was created with"
}
],
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03207",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that did not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, and the pNext
chain includes a VkRenderPassAttachmentBeginInfo structure, its attachmentCount
must be zero"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03208",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, the attachmentCount
of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be equal to the value of VkFramebufferAttachmentsCreateInfo::attachmentImageInfoCount
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-02780",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must have been created on the same VkDevice as framebuffer
and renderPass
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03209",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView of an image created with a value of VkImageCreateInfo::flags
equal to the flags
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-04627",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView with an inherited usage equal to the usage
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03211",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView with a width equal to the width
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03212",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView with a height equal to the height
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03213",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView of an image created with a value of VkImageViewCreateInfo::subresourceRange.layerCount
equal to the layerCount
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03214",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView of an image created with a value of VkImageFormatListCreateInfo::viewFormatCount
equal to the viewFormatCount
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03215",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView of an image created with a set of elements in VkImageFormatListCreateInfo::pViewFormats
equal to the set of elements in the pViewFormats
member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos
used to create framebuffer
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03216",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView of an image created with a value of VkImageViewCreateInfo::format
equal to the corresponding value of VkAttachmentDescription::format
in renderPass
"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03217",
"text": " If framebuffer
was created with a VkFramebufferCreateInfo::flags
value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT
, each element of the pAttachments
member of a VkRenderPassAttachmentBeginInfo structure included in the pNext
chain must be a VkImageView of an image created with a value of VkImageCreateInfo::samples
equal to the corresponding value of VkAttachmentDescription::samples
in renderPass
"
}
],
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02869",
"text": " If the pNext
chain includes VkRenderPassTransformBeginInfoQCOM, renderArea.offset
must equal (0,0)"
},
{
"vuid": "VUID-VkRenderPassBeginInfo-pNext-02870",
"text": " If the pNext
chain includes VkRenderPassTransformBeginInfoQCOM, renderArea.extent
transformed by VkRenderPassTransformBeginInfoQCOM::transform
must equal the framebuffer
dimensions"
}
]
},
"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"
}
]
},
"VkRenderPassTransformBeginInfoQCOM": {
"(VK_QCOM_render_pass_transform)": [
{
"vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871",
"text": " transform
must be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
, VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
, VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
, or VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
"
},
{
"vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872",
"text": " The renderpass
must have been created with VkRenderPassCreateInfo::flags
containing VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM
"
},
{
"vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM
"
}
]
},
"VkSubpassBeginInfo": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO
"
},
{
"vuid": "VUID-VkSubpassBeginInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkSubpassBeginInfo-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-offset-06166",
"text": " The offset.x
member of any element of pDeviceRenderAreas
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06167",
"text": " The offset.y
member of any element of pDeviceRenderAreas
must be greater than or equal to 0"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06168",
"text": " The sum of the offset.x
and extent.width
members of any element of pDeviceRenderAreas
must be less than or equal to maxFramebufferWidth
"
},
{
"vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-offset-06169",
"text": " The sum of the offset.y
and extent.height
members of any element of pDeviceRenderAreas
must be less than or equal to maxFramebufferHeight
"
},
{
"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"
}
]
},
"VkRenderPassAttachmentBeginInfo": {
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218",
"text": " Each element of pAttachments
must only specify a single mip level"
},
{
"vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219",
"text": " Each element of pAttachments
must have been created with the identity swizzle"
},
{
"vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114",
"text": " Each element of pAttachments
must have been created with VkImageViewCreateInfo::viewType
not equal to VK_IMAGE_VIEW_TYPE_3D
"
},
{
"vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-07010",
"text": " If multisampled-render-to-single-sampled is enabled for any subpass, all element of pAttachments
which have a sample count equal to VK_SAMPLE_COUNT_1_BIT
must have a format that supports the sample count specified in VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
"
},
{
"vuid": "VUID-VkRenderPassAttachmentBeginInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO
"
},
{
"vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkImageView handles"
}
]
},
"vkGetRenderAreaGranularity": {
"core": [
{
"vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
"text": " renderPass
must be a valid VkRenderPass handle"
},
{
"vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
"text": " pGranularity
must be a valid pointer to a VkExtent2D structure"
},
{
"vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
"text": " renderPass
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdNextSubpass": {
"core": [
{
"vuid": "VUID-vkCmdNextSubpass-None-00909",
"text": " The current subpass index must be less than the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdNextSubpass-contents-parameter",
"text": " contents
must be a valid VkSubpassContents value"
},
{
"vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdNextSubpass-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdNextSubpass-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdNextSubpass-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdNextSubpass-None-02349",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"vkCmdNextSubpass2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCmdNextSubpass2-None-03102",
"text": " The current subpass index must be less than the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdNextSubpass2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter",
"text": " pSubpassBeginInfo
must be a valid pointer to a valid VkSubpassBeginInfo structure"
},
{
"vuid": "VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter",
"text": " pSubpassEndInfo
must be a valid pointer to a valid VkSubpassEndInfo structure"
},
{
"vuid": "VUID-vkCmdNextSubpass2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdNextSubpass2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdNextSubpass2-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdNextSubpass2-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdNextSubpass2-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdNextSubpass2-None-02350",
"text": " This command must not be recorded when transform feedback is active"
}
]
},
"vkCmdEndRenderPass": {
"core": [
{
"vuid": "VUID-vkCmdEndRenderPass-None-00910",
"text": " The current subpass index must be equal to the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdEndRenderPass-None-07004",
"text": " If vkCmdBeginQuery
* was called within a subpass of the render pass, the corresponding vkCmdEndQuery
* must have been called subsequently within the same subpass."
},
{
"vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndRenderPass-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndRenderPass-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndRenderPass-None-02351",
"text": " This command must not be recorded when transform feedback is active"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdEndRenderPass-None-06170",
"text": " The current render pass instance must not have been begun with vkCmdBeginRendering"
}
]
},
"vkCmdEndRenderPass2": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-vkCmdEndRenderPass2-None-03103",
"text": " The current subpass index must be equal to the number of subpasses in the render pass minus one"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-None-07005",
"text": " If vkCmdBeginQuery
* was called within a subpass of the render pass, the corresponding vkCmdEndQuery
* must have been called subsequently within the same subpass."
},
{
"vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter",
"text": " pSubpassEndInfo
must be a valid pointer to a valid VkSubpassEndInfo structure"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdEndRenderPass2-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndRenderPass2-None-02352",
"text": " This command must not be recorded when transform feedback is active"
}
],
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdEndRenderPass2-None-06171",
"text": " The current render pass instance must not have been begun with vkCmdBeginRendering"
}
]
},
"VkSubpassEndInfo": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkSubpassEndInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_END_INFO
"
},
{
"vuid": "VUID-VkSubpassEndInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkSubpassFragmentDensityMapOffsetEndInfoQCOM"
},
{
"vuid": "VUID-VkSubpassEndInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkSubpassFragmentDensityMapOffsetEndInfoQCOM": {
"(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_QCOM_fragment_density_map_offset)": [
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapOffsets-06503",
"text": " If the fragmentDensityMapOffsets
feature is not enabled or fragment density map is not enabled in the render pass, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityMapAttachment-06504",
"text": " If VkSubpassDescription
::fragmentDensityMapAttachment
is not is not VK_ATTACHMENT_UNUSED
and was not created with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pDepthStencilAttachment-06505",
"text": " If VkSubpassDescription
::pDepthStencilAttachment
is not is not VK_ATTACHMENT_UNUSED
and was not created with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pInputAttachments-06506",
"text": " If any element of VkSubpassDescription
::pInputAttachments
is not is not VK_ATTACHMENT_UNUSED
and was not created with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pColorAttachments-06507",
"text": " If any element of VkSubpassDescription
::pColorAttachments
is not is not VK_ATTACHMENT_UNUSED
and was not created with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pResolveAttachments-06508",
"text": " If any element of VkSubpassDescription
::pResolveAttachments
is not is not VK_ATTACHMENT_UNUSED
and was not created with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pPreserveAttachments-06509",
"text": " If any element of VkSubpassDescription
::pPreserveAttachments
is not is not VK_ATTACHMENT_UNUSED
and was not created with VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM
, fragmentDensityOffsetCount
must equal 0
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06510",
"text": " If fragmentDensityOffsetCount
is not 0
and multiview is enabled for the render pass, fragmentDensityOffsetCount
must equal the layerCount
that was specified in creating the fragment density map attachment view."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-fragmentDensityOffsetCount-06511",
"text": " If fragmentDensityOffsetCount
is not 0
and multiview is not enabled for the render pass, fragmentDensityOffsetCount
must equal 1
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-x-06512",
"text": " The x
component of each element of pFragmentDensityOffsets
must be an integer multiple of fragmentDensityOffsetGranularity.width
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-y-06513",
"text": " The y
component of each element of pFragmentDensityOffsets
must be an integer multiple of fragmentDensityOffsetGranularity.height
."
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM
"
},
{
"vuid": "VUID-VkSubpassFragmentDensityMapOffsetEndInfoQCOM-pFragmentDensityOffsets-parameter",
"text": " If fragmentDensityOffsetCount
is not 0
, pFragmentDensityOffsets
must be a valid pointer to an array of fragmentDensityOffsetCount
VkOffset2D structures"
}
]
},
"VkRenderPassCreationControlEXT": {
"(VK_EXT_subpass_merge_feedback)": [
{
"vuid": "VUID-VkRenderPassCreationControlEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT
"
}
]
},
"VkRenderPassCreationFeedbackCreateInfoEXT": {
"(VK_EXT_subpass_merge_feedback)": [
{
"vuid": "VUID-VkRenderPassCreationFeedbackCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkRenderPassCreationFeedbackCreateInfoEXT-pRenderPassFeedback-parameter",
"text": " pRenderPassFeedback
must be a valid pointer to a VkRenderPassCreationFeedbackInfoEXT structure"
}
]
},
"VkRenderPassSubpassFeedbackCreateInfoEXT": {
"(VK_EXT_subpass_merge_feedback)": [
{
"vuid": "VUID-VkRenderPassSubpassFeedbackCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkRenderPassSubpassFeedbackCreateInfoEXT-pSubpassFeedback-parameter",
"text": " pSubpassFeedback
must be a valid pointer to a VkRenderPassSubpassFeedbackInfoEXT structure"
}
]
},
"vkCreateShaderModule": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkCreateShaderModule-pCreateInfo-06904",
"text": " If pCreateInfo
is not NULL
, pCreateInfo->pNext
must be NULL
or a pointer to a VkShaderModuleValidationCacheCreateInfoEXT structure"
}
],
"!(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkCreateShaderModule-pCreateInfo-06905",
"text": " If pCreateInfo
is not NULL
, pCreateInfo->pNext
must be NULL
"
}
],
"core": [
{
"vuid": "VUID-vkCreateShaderModule-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkShaderModuleCreateInfo structure"
},
{
"vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
"text": " pShaderModule
must be a valid pointer to a VkShaderModule handle"
}
]
},
"VkShaderModuleCreateInfo": {
"core": [
{
"vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
"text": " codeSize
must be greater than 0"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
"text": " pCode
must declare the Shader
capability for SPIR-V code"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
"text": " pCode
must not declare any capability that is not supported by the API, as described by the Capabilities section of the SPIR-V Environment appendix"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
"text": " If pCode
declares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-04146",
"text": " pCode
must not declare any SPIR-V extension that is not supported by the API, as described by the Extension section of the SPIR-V Environment appendix"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-04147",
"text": " If pCode
declares any of the SPIR-V extensions listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
"text": " pCode
must be a valid pointer to an array of \\(\\textrm{codeSize} \\over 4\\) uint32_t
values"
}
],
"!(VK_NV_glsl_shader)": [
{
"vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
"text": " codeSize
must be a multiple of 4"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
"text": " pCode
must point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
"text": " pCode
must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix"
}
],
"(VK_NV_glsl_shader)": [
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
"text": " If pCode
is a pointer 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
is a pointer to SPIR-V code, that code must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix"
},
{
"vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
"text": " If pCode
is a pointer 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
"
}
]
},
"vkGetShaderModuleIdentifierEXT": {
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-vkGetShaderModuleIdentifierEXT-shaderModuleIdentifier-06884",
"text": " shaderModuleIdentifier
feature must be enabled"
},
{
"vuid": "VUID-vkGetShaderModuleIdentifierEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetShaderModuleIdentifierEXT-shaderModule-parameter",
"text": " shaderModule
must be a valid VkShaderModule handle"
},
{
"vuid": "VUID-vkGetShaderModuleIdentifierEXT-pIdentifier-parameter",
"text": " pIdentifier
must be a valid pointer to a VkShaderModuleIdentifierEXT structure"
},
{
"vuid": "VUID-vkGetShaderModuleIdentifierEXT-shaderModule-parent",
"text": " shaderModule
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetShaderModuleCreateInfoIdentifierEXT": {
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-shaderModuleIdentifier-06885",
"text": " shaderModuleIdentifier
feature must be enabled"
},
{
"vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkShaderModuleCreateInfo structure"
},
{
"vuid": "VUID-vkGetShaderModuleCreateInfoIdentifierEXT-pIdentifier-parameter",
"text": " pIdentifier
must be a valid pointer to a VkShaderModuleIdentifierEXT structure"
}
]
},
"VkShaderModuleIdentifierEXT": {
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkShaderModuleIdentifierEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT
"
},
{
"vuid": "VUID-VkShaderModuleIdentifierEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdSetPatchControlPointsEXT": {
"(VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdSetPatchControlPointsEXT-None-04873",
"text": " The extendedDynamicState2PatchControlPoints
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetPatchControlPointsEXT-patchControlPoints-04874",
"text": " patchControlPoints
must be greater than zero and less than or equal to VkPhysicalDeviceLimits
::maxTessellationPatchSize
"
},
{
"vuid": "VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetPatchControlPointsEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
"text": " pPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
"text": " If the value referenced by pPropertyCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertyCount
VkCooperativeMatrixPropertiesNV structures"
}
]
},
"VkCooperativeMatrixPropertiesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV
"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
"text": " AType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
"text": " BType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
"text": " CType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
"text": " DType
must be a valid VkComponentTypeNV value"
},
{
"vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
"text": " scope
must be a valid VkScopeNV value"
}
]
},
"vkCreateValidationCacheEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkValidationCacheCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
"text": " pValidationCache
must be a valid pointer to a VkValidationCacheEXT handle"
}
]
},
"VkValidationCacheCreateInfoEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
"text": " If initialDataSize
is not 0
, it must be equal to the size of pInitialData
, as returned by vkGetValidationCacheDataEXT
when pInitialData
was originally retrieved"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
"text": " If initialDataSize
is not 0
, pInitialData
must have been retrieved from a previous call to vkGetValidationCacheDataEXT
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
"text": " If initialDataSize
is not 0
, pInitialData
must be a valid pointer to an array of initialDataSize
bytes"
}
]
},
"vkMergeValidationCachesEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
"text": " dstCache
must not appear in the list of source caches"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
"text": " dstCache
must be a valid VkValidationCacheEXT handle"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
"text": " pSrcCaches
must be a valid pointer to an array of srcCacheCount
valid VkValidationCacheEXT handles"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
"text": " srcCacheCount
must be greater than 0
"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
"text": " dstCache
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
"text": " Each element of pSrcCaches
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetValidationCacheDataEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
"text": " validationCache
must be a valid VkValidationCacheEXT handle"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
"text": " pDataSize
must be a valid pointer to a size_t
value"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
"text": " If the value referenced by pDataSize
is not 0
, and pData
is not NULL
, pData
must be a valid pointer to an array of pDataSize
bytes"
},
{
"vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
"text": " validationCache
must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyValidationCacheEXT": {
"(VK_EXT_validation_cache)": [
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
"text": " If VkAllocationCallbacks
were provided when validationCache
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
"text": " If no VkAllocationCallbacks
were provided when validationCache
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
"text": " If validationCache
is not VK_NULL_HANDLE, validationCache
must be a valid VkValidationCacheEXT handle"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
"text": " If validationCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateComputePipelines": {
"core": [
{
"vuid": "VUID-vkCreateComputePipelines-flags-00695",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and the basePipelineIndex
member of that same element is not -1
, basePipelineIndex
must be less than the index into pCreateInfos
that corresponds to that element"
},
{
"vuid": "VUID-vkCreateComputePipelines-flags-00696",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set"
},
{
"vuid": "VUID-vkCreateComputePipelines-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache handle"
},
{
"vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of createInfoCount
valid VkComputePipelineCreateInfo structures"
},
{
"vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
"text": " pPipelines
must be a valid pointer to an array of createInfoCount
VkPipeline handles"
},
{
"vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
"text": " createInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873",
"text": " If pipelineCache
was created with VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
, host access to pipelineCache
must be externally synchronized"
}
]
},
"VkComputePipelineCreateInfo": {
"core": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is -1, basePipelineHandle
must be a valid handle to a compute VkPipeline
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is VK_NULL_HANDLE, basePipelineIndex
must be a valid index into the calling command’s pCreateInfos
parameter"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is not -1, basePipelineHandle
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is not VK_NULL_HANDLE, basePipelineIndex
must be -1"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
"text": " The stage
member of stage
must be VK_SHADER_STAGE_COMPUTE_BIT
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
"text": " The shader code for the entry point identified by stage
and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
"text": " layout
must be consistent with the layout of the compute shader specified in stage
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
"text": " The number of resources in layout
accessible to the compute shader stage must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageResources
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
"text": " 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 VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreationFeedbackCreateInfo, VkPipelineRobustnessCreateInfoEXT, or VkSubpassShadingPipelineCreateInfoHUAWEI"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03364",
"text": " flags
must not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
}
],
"(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03365",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03366",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03367",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03368",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03369",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03370",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
"
},
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-03576",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
"
}
],
"(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-04945",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
"
}
],
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-02874",
"text": " flags
must not include VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875",
"text": " If the pipelineCreationCacheControl
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
or VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
"
}
],
"(VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-pipelineStageCreationFeedbackCount-06566",
"text": " If VkPipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCount
is not 0
, it must be 1
"
}
],
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkComputePipelineCreateInfo-flags-07367",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
"
}
]
},
"VkPipelineShaderStageCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
"text": " If the geometryShader
feature is not enabled, stage
must not be VK_SHADER_STAGE_GEOMETRY_BIT
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
"text": " If the tessellationShader
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 specifying 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 specifying 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 specifying an invocation count that is greater than 0
and less than or equal to VkPhysicalDeviceLimits
::maxGeometryShaderInvocations
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
"text": " If stage
is either VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
, or 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-02597",
"text": " If stage
is either VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
, or 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-06685",
"text": " If stage
is VK_SHADER_STAGE_FRAGMENT_BIT
, and the identified entry point writes to FragDepth
in any execution path, all execution paths that are not exclusive to helper invocations must either discard the fragment, or write or initialize the value of FragDepth
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-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 VkDebugUtilsObjectNameInfoEXT, VkPipelineRobustnessCreateInfoEXT, VkPipelineShaderStageModuleIdentifierCreateInfoEXT, VkPipelineShaderStageRequiredSubgroupSizeCreateInfo, VkShaderModuleCreateInfo, or VkShaderModuleValidationCacheCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineShaderStageCreateFlagBits values"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
"text": " stage
must be a valid VkShaderStageFlagBits value"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
"text": " If module
is not VK_NULL_HANDLE, module
must be a valid VkShaderModule handle"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
"text": " If pSpecializationInfo
is not NULL
, pSpecializationInfo
must be a valid pointer to a valid VkSpecializationInfo structure"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
"text": " If the meshShaders
feature is not enabled, stage
must not be VK_SHADER_STAGE_MESH_BIT_EXT
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
"text": " If the taskShaders
feature is not enabled, stage
must not be VK_SHADER_STAGE_TASK_BIT_EXT
"
}
],
"(VK_EXT_shader_stencil_export)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06686",
"text": " If stage
is VK_SHADER_STAGE_FRAGMENT_BIT
, and the identified entry point writes to FragStencilRefEXT
in any execution path, all execution paths that are not exclusive to helper invocations must either discard the fragment, or write or initialize the value of FragStencilRefEXT
"
}
],
"(VK_VERSION_1_3,VK_EXT_subgroup_size_control)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784",
"text": " If flags
has the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
flag set, the subgroupSizeControl
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785",
"text": " If flags
has the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
flag set, the computeFullSubgroups
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754",
"text": " If a VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is included in the pNext
chain, flags
must not have the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
flag set"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755",
"text": " If a VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is included in the pNext
chain, the subgroupSizeControl
feature must be enabled, and stage
must be a valid bit specified in requiredSubgroupSizeStages
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756",
"text": " If a VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is included in the pNext
chain and stage
is VK_SHADER_STAGE_COMPUTE_BIT
, the local workgroup size of the shader must be less than or equal to the product of VkPipelineShaderStageRequiredSubgroupSizeCreateInfo::requiredSubgroupSize
and maxComputeWorkgroupSubgroups
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02757",
"text": " If a VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is included in the pNext
chain, and flags
has the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
flag set, the local workgroup size in the X dimension of the pipeline must be a multiple of VkPipelineShaderStageRequiredSubgroupSizeCreateInfo::requiredSubgroupSize
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02758",
"text": " If flags
has both the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
and VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
flags set, the local workgroup size in the X dimension of the pipeline must be a multiple of maxSubgroupSize
"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02759",
"text": " If flags
has the VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT
flag set and flags
does not have the VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT
flag set and no VkPipelineShaderStageRequiredSubgroupSizeCreateInfo structure is included in the pNext
chain, the local workgroup size in the X dimension of the pipeline must be a multiple of subgroupSize
"
}
],
"!(VK_EXT_graphics_pipeline_library+VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-module-06716",
"text": " module
must be a valid VkShaderModule"
}
],
"(VK_EXT_shader_module_identifier)+(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06844",
"text": " If a shader module identifier is specified for this stage
, a VkShaderModuleCreateInfo structure must not be present in the pNext
chain"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06845",
"text": " If a shader module identifier is not specified for this stage
, module
must be a valid VkShaderModule or there must be a valid VkShaderModuleCreateInfo structure in the pNext
chain"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06846",
"text": " If a shader module identifier is not specified for this stage
, and the graphicsPipelineLibrary
feature is not enabled, module
must be a valid VkShaderModule"
}
],
"(VK_EXT_shader_module_identifier)+!(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06847",
"text": " If a shader identifier is not specified for this stage
, module
must be a valid VkShaderModule"
}
],
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-06848",
"text": " If a shader module identifier is specified for this stage
, module
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06849",
"text": " If a shader module identifier is not specified, the shader code used by the pipeline must be valid as described by the Khronos SPIR-V Specification after applying the specializations provided in pSpecializationInfo
, if any, and then converting all specialization constants into fixed constants"
}
],
"!(VK_EXT_shader_module_identifier)+(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-graphicsPipelineLibrary-06717",
"text": " If the graphicsPipelineLibrary
feature is not enabled, module
must be a valid VkShaderModule"
},
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-module-06718",
"text": " If module
is VK_NULL_HANDLE, there must be a valid VkShaderModuleCreateInfo structure in the pNext
chain"
}
],
"!(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-06719",
"text": " The shader code used by the pipeline must be valid as described by the Khronos SPIR-V Specification after applying the specializations provided in pSpecializationInfo
, if any, and then converting all specialization constants into fixed constants"
}
]
},
"VkPipelineShaderStageRequiredSubgroupSizeCreateInfo": {
"(VK_VERSION_1_3,VK_EXT_subgroup_size_control)": [
{
"vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02760",
"text": " requiredSubgroupSize
must be a power-of-two integer"
},
{
"vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02761",
"text": " requiredSubgroupSize
must be greater or equal to minSubgroupSize
"
},
{
"vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-requiredSubgroupSize-02762",
"text": " requiredSubgroupSize
must be less than or equal to maxSubgroupSize
"
},
{
"vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO
"
}
]
},
"VkSubpassShadingPipelineCreateInfoHUAWEI": {
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-subpass-04946",
"text": " subpass
must be created with VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
bind point"
},
{
"vuid": "VUID-VkSubpassShadingPipelineCreateInfoHUAWEI-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI
"
}
]
},
"vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI": {
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parameter",
"text": " renderpass
must be a valid VkRenderPass handle"
},
{
"vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-pMaxWorkgroupSize-parameter",
"text": " pMaxWorkgroupSize
must be a valid pointer to a VkExtent2D structure"
},
{
"vuid": "VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-renderpass-parent",
"text": " renderpass
must have been created, allocated, or retrieved from device
"
}
]
},
"VkPipelineRobustnessCreateInfoEXT": {
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06926",
"text": " If the pipelineRobustness
feature is not enabled, storageBuffers
must be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06927",
"text": " If the pipelineRobustness
feature is not enabled, uniformBuffers
must be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06928",
"text": " If the pipelineRobustness
feature is not enabled, vertexInputs
must be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-pipelineRobustness-06929",
"text": " If the pipelineRobustness
feature is not enabled, images
must be VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess-06930",
"text": " If the robustImageAccess
feature is not supported, images
must not be VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06931",
"text": " If the robustBufferAccess2
feature is not supported, storageBuffers
must not be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06932",
"text": " If the robustBufferAccess2
feature is not supported, uniformBuffers
must not be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustBufferAccess2-06933",
"text": " If the robustBufferAccess2
feature is not supported, vertexInputs
must not be VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-robustImageAccess2-06934",
"text": " If the robustImageAccess2
feature is not supported, images
must not be VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-storageBuffers-parameter",
"text": " storageBuffers
must be a valid VkPipelineRobustnessBufferBehaviorEXT value"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-uniformBuffers-parameter",
"text": " uniformBuffers
must be a valid VkPipelineRobustnessBufferBehaviorEXT value"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-vertexInputs-parameter",
"text": " vertexInputs
must be a valid VkPipelineRobustnessBufferBehaviorEXT value"
},
{
"vuid": "VUID-VkPipelineRobustnessCreateInfoEXT-images-parameter",
"text": " images
must be a valid VkPipelineRobustnessImageBehaviorEXT value"
}
]
},
"VkPipelineShaderStageModuleIdentifierCreateInfoEXT": {
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06850",
"text": " If this structure is included in a pNext
chain and identifierSize
is not equal to 0, the shaderModuleIdentifier
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pNext-06851",
"text": " If this struct is included in a pNext
chain of VkPipelineShaderStageCreateInfo and identifierSize
is not equal to 0, the pipeline must be created with the VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
flag set"
},
{
"vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-identifierSize-06852",
"text": " identifierSize
must be less-or-equal to VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT
"
},
{
"vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineShaderStageModuleIdentifierCreateInfoEXT-pIdentifier-parameter",
"text": " If identifierSize
is not 0
, pIdentifier
must be a valid pointer to an array of identifierSize
uint8_t
values"
}
]
},
"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
"
}
],
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876",
"text": " If pipelineCache
was created with VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
, host access to pipelineCache
must be externally synchronized"
}
]
},
"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-pStages-00729",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes a tessellation control shader stage, it must include a tessellation evaluation shader stage"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes a tessellation evaluation shader stage, it must include a tessellation control shader stage"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
"text": " If the pipeline is being created with pre-rasterization shader state and 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 the pipeline is being created with pre-rasterization shader state and pStages
includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode
instruction specifying the type of subdivision in the pipeline"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes tessellation shader stages, and the shader code of both stages contain an OpExecutionMode
instruction specifying the type of subdivision in the pipeline, they must both specify the same subdivision mode"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes tessellation shader stages, the shader code of at least one stage must contain an OpExecutionMode
instruction specifying the output patch size in the pipeline"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes tessellation shader stages, and the shader code of both contain an OpExecutionMode
instruction specifying the out patch size in the pipeline, they must both specify the same patch size"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
"text": " If the pipeline is being created with pre-rasterization shader state and 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 pipeline is being created with pre-rasterization shader state and the topology
member of pInputAssembly
is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
, pStages
must include tessellation shader stages"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes a geometry shader stage, and does not include any tessellation shader stages, its shader code must contain an OpExecutionMode
instruction specifying an input primitive type that is compatible with the primitive topology specified in pInputAssembly
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
"text": " If the pipeline is being created with pre-rasterization shader state and pStages
includes a geometry shader stage, and also includes tessellation shader stages, its shader code must contain an OpExecutionMode
instruction specifying an input primitive type that is compatible with the primitive topology that is output by the tessellation stages"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
"text": " If the pipeline is being created with pre-rasterization shader state and fragment shader state, it includes both a fragment shader and a geometry shader, 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-renderPass-06038",
"text": " If renderPass
is not VK_NULL_HANDLE and the pipeline is being created with fragment shader state the fragment shader must not read from any input attachment that is defined as VK_ATTACHMENT_UNUSED
in subpass
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
"text": " If the pipeline is being created with pre-rasterization shader state and multiple pre-rasterization shader stages are included in pStages
, the shader code for the entry points identified by those pStages
and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-04889",
"text": " If the pipeline is being created with pre-rasterization shader state and fragment shader state, the fragment shader and last pre-rasterization shader stage and any relevant state must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06041",
"text": " If renderPass
is not VK_NULL_HANDLE, and the pipeline is being created with fragment output interface state, then for each color attachment in the subpass, if the potential format features of the format of the corresponding attachment description do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06042",
"text": " If renderPass
is not VK_NULL_HANDLE, and the pipeline is being created with fragment output interface state, 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-00749",
"text": " If the pipeline is being created with pre-rasterization shader state, and the wideLines
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 pipeline is being created with pre-rasterization shader state, and 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 pipeline is being created with fragment output interface state, pMultisampleState
must be a valid pointer to a valid VkPipelineMultisampleStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06043",
"text": " If renderPass
is not VK_NULL_HANDLE, the pipeline is being created with fragment shader state, and subpass
uses a depth/stencil attachment, pDepthStencilState
must be a valid pointer to a valid VkPipelineDepthStencilStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06044",
"text": " If renderPass
is not VK_NULL_HANDLE, the pipeline is being created with fragment output interface state, and subpass
uses color attachments, pColorBlendState
must be a valid pointer to a valid VkPipelineColorBlendStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
"text": " If the pipeline is being created with pre-rasterization shader state, the depthBiasClamp
feature is not enabled, no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_DEPTH_BIAS
, and the depthBiasEnable
member of pRasterizationState
is VK_TRUE
, the depthBiasClamp
member of pRasterizationState
must be 0.0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
"text": " layout
must be consistent with all shaders specified in pStages
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-multisampledRenderToSingleSampled-06853",
"text": " If the pipeline is being created with fragment output interface state, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, and if subpass
uses color and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState
must be the same as the sample count for those subpass attachments"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
"text": " If the pipeline is being created with fragment output interface state, and subpass
does not use any color and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState
must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06046",
"text": " If renderPass
is a valid renderPass, subpass
must be a valid subpass within renderPass
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
"text": " The number of resources in layout
accessible to each shader stage that is used by the pipeline must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageResources
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
"text": " If the pipeline is being created with vertex input state, pInputAssemblyState
must be a valid pointer to a valid VkPipelineInputAssemblyStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06894",
"text": " If the pipeline is being created with pre-rasterization shader state but not fragment shader state, elements of pStages
must not have stage
set to VK_SHADER_STAGE_FRAGMENT_BIT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06895",
"text": " If the pipeline is being created with fragment shader state but not pre-rasterization shader state, elements of pStages
must not have stage
set to a shader stage which participates in pre-rasterization"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06896",
"text": " If the pipeline is being created with pre-rasterization shader state, all elements of pStages
must have a stage
set to a shader stage which participates in fragment shader state or pre-rasterization shader state"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-06897",
"text": " If the pipeline is being created with fragment shader state and/or pre-rasterization shader state, any value of stage
must not be set in more than one element of pStages
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkAttachmentSampleCountInfoAMD, VkGraphicsPipelineLibraryCreateInfoEXT, VkGraphicsPipelineShaderGroupsCreateInfoNV, VkMultiviewPerViewAttributesInfoNVX, VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreationFeedbackCreateInfo, VkPipelineDiscardRectangleStateCreateInfoEXT, VkPipelineFragmentShadingRateEnumStateCreateInfoNV, VkPipelineFragmentShadingRateStateCreateInfoKHR, VkPipelineLibraryCreateInfoKHR, VkPipelineRenderingCreateInfo, VkPipelineRepresentativeFragmentTestStateCreateInfoNV, or VkPipelineRobustnessCreateInfoEXT"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineCreateFlagBits values"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
"text": " If pDynamicState
is not NULL
, pDynamicState
must be a valid pointer to a valid VkPipelineDynamicStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
"text": " Each of basePipelineHandle
, layout
, and renderPass
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"!(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
"text": " If the pipeline is being created with pre-rasterization shader state the stage
member of one element of pStages
must be VK_SHADER_STAGE_VERTEX_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
"text": " If the pipeline is being created with pre-rasterization shader state the geometric shader stages provided in pStages
must be either from the mesh shading pipeline (stage
is VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
) or from the primitive shading pipeline (stage
is VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
, or VK_SHADER_STAGE_GEOMETRY_BIT
)"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
"text": " If the pipeline is being created with pre-rasterization shader state the stage
member of one element of pStages
must be either VK_SHADER_STAGE_VERTEX_BIT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-PrimitiveId-06264",
"text": " If the pipeline is being created with pre-rasterization shader state, it includes a mesh shader and the fragment shader code reads from an input variable that is decorated with PrimitiveId
, then the mesh shader code must write to a matching output variable, decorated with PrimitiveId
, in all execution paths"
}
],
"(VK_NV_mesh_shader+VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-TaskNV-07063",
"text": " The shader stages for VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
must use either the TaskNV
and MeshNV
{ExecutionModel} or the TaskEXT
and MeshEXT
{ExecutionModel}, but must not use both"
}
],
"!(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT
, the pViewports
member of pViewportState
must be a valid pointer to an array of pViewportState->viewportCount
valid VkViewport
structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
"text": " If the pipeline is being created with pre-rasterization shader state, and 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"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT
or VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
, the pViewports
member of pViewportState
must be a valid pointer to an array of pViewportState->viewportCount
valid VkViewport
structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SCISSOR
or VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
, the pScissors
member of pViewportState
must be a valid pointer to an array of pViewportState->scissorCount
VkRect2D
structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379",
"text": " If the pipeline is being created with pre-rasterization shader state, and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
is included in the pDynamicStates
array then viewportCount
must be zero"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380",
"text": " If the pipeline is being created with pre-rasterization shader state, and VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
is included in the pDynamicStates
array then scissorCount
must be zero"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132",
"text": " If the pipeline is being created with pre-rasterization shader state, and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
is included in the pDynamicStates
array then VK_DYNAMIC_STATE_VIEWPORT
must not be present"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133",
"text": " If the pipeline is being created with pre-rasterization shader state, and VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
is included in the pDynamicStates
array then VK_DYNAMIC_STATE_SCISSOR
must not be present"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pViewportState-04892",
"text": " If the pipeline is being created with pre-rasterization shader state, and the graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled, pViewportState
must be a valid pointer to a valid VkPipelineViewportStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04869",
"text": " If the extendedDynamicState2LogicOp
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_LOGIC_OP_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04870",
"text": " If the extendedDynamicState2PatchControlPoints
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
"text": " If the pipeline is being created with fragment shader state, 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_depth_range_unrestricted)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
"text": " If the pipeline is being created with fragment shader state, and 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 the pipeline is being created with fragment shader state or fragment output interface state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure included in 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 the pipeline is being created with fragment shader state or fragment output interface state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure included in 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 the pipeline is being created with fragment shader state or fragment output interface state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure included in the pNext
chain of pMultisampleState
is VK_TRUE
, sampleLocationsInfo.sampleLocationsPerPixel
must equal rasterizationSamples
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
"text": " If the pipeline is being created with fragment shader state, and the sampleLocationsEnable
member of a VkPipelineSampleLocationsStateCreateInfoEXT structure included in the pNext
chain of pMultisampleState
is VK_TRUE
, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_AMD_mixed_attachment_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
"text": " If the pipeline is being created with fragment output interface state, and the VK_AMD_mixed_attachment_samples
extension is enabled, and if subpass
uses color and/or depth/stencil attachments, then the rasterizationSamples
member of pMultisampleState
must equal the maximum of the sample counts of those subpass attachments"
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06854",
"text": " If renderPass
is not VK_NULL_HANDLE, the VK_EXT_multisampled_render_to_single_sampled
extension is enabled, and subpass
has a VkMultisampledRenderToSingleSampledInfoEXT structure included in the VkSubpassDescription2::pNext
chain with multisampledRenderToSingleSampledEnable
equal to VK_TRUE
, then the rasterizationSamples
member of pMultisampleState
must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
."
}
],
"(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
"text": " If the pipeline is being created with fragment output interface state, and the VK_NV_framebuffer_mixed_samples
extension is enabled, and if subpass
has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the rasterizationSamples
member of pMultisampleState
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
"text": " If the pipeline is being created with fragment output interface state, and the VK_NV_framebuffer_mixed_samples
extension is enabled, and if subpass
has any color attachments, then the rasterizationSamples
member of pMultisampleState
must be greater than or equal to the sample count for those subpass attachments"
}
],
"(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722",
"text": " If the pipeline is being created with fragment output interface state, and the VK_NV_coverage_reduction_mode
extension is enabled, the coverage reduction mode specified by VkPipelineCoverageReductionStateCreateInfoNV::coverageReductionMode
, the rasterizationSamples
member of pMultisampleState
and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV
"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06047",
"text": " If renderPass
is a valid renderPass, the pipeline is being created with pre-rasterization shader state, and 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-06048",
"text": " If renderPass
is a valid renderPass, the pipeline is being created with pre-rasterization shader state, and 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-06049",
"text": " If renderPass
is a valid renderPass, the pipeline is being created with pre-rasterization shader state, and 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-06050",
"text": " If renderPass
is a valid renderPass and the pipeline is being created with pre-rasterization shader state, and 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_multiview)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-07064",
"text": " If renderPass
is a valid renderPass, the pipeline is being created with pre-rasterization shader state, and the renderPass
has multiview enabled and subpass
has more than one bit set in the view mask and multiviewMeshShader
is not enabled, then pStages
must not include a mesh shader"
}
],
"(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_VERSION_1_1,VK_KHR_maintenance2,VK_KHR_create_renderpass2)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
"text": " If the pipeline is being created with fragment shader state and an input attachment was referenced by an aspectMask
at renderPass
creation time, the fragment shader must only read from the aspects that were specified for that input attachment"
}
],
"(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
, and the viewportWScalingEnable
member of a VkPipelineViewportWScalingStateCreateInfoNV structure, included in the pNext
chain of pViewportState
, is VK_TRUE
, the pViewportWScalings
member of the VkPipelineViewportWScalingStateCreateInfoNV must be a pointer to an array of VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
valid VkViewportWScalingNV structures"
}
],
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV
, and if pViewportState->pNext
chain includes a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure, and if its exclusiveScissorCount
member is not 0
, then its pExclusiveScissors
member must be a valid pointer to an array of exclusiveScissorCount
VkRect2D structures"
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
, and if pViewportState->pNext
chain includes a VkPipelineViewportShadingRateImageStateCreateInfoNV structure, then its pShadingRatePalettes
member must be a valid pointer to an array of viewportCount
valid VkShadingRatePaletteNV structures"
}
],
"(VK_EXT_discard_rectangles)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058",
"text": " If the pipeline is being created with pre-rasterization shader state, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
, and if pNext
chain includes a VkPipelineDiscardRectangleStateCreateInfoEXT structure, and if its discardRectangleCount
member is not 0
, then its pDiscardRectangles
member must be a valid pointer to an array of discardRectangleCount
VkRect2D structures"
}
],
"!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
"text": " If the pipeline is being created with vertex input state, pVertexInputState
must be a valid pointer to a valid VkPipelineVertexInputStateCreateInfo structure"
}
],
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pVertexInputState-04910",
"text": " If the pipeline is being created with vertex input state, and VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
is not set, pVertexInputState
must be a valid pointer to a valid VkPipelineVertexInputStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04807",
"text": " If the pipeline is being created with pre-rasterization shader state and the vertexInputDynamicState
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
"text": " If the pipeline is being created with pre-rasterization shader state, the Xfb
execution mode can be specified by no more than one shader stage in pStages
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
"text": " If the pipeline is being created with pre-rasterization shader state, and any shader stage in pStages
specifies Xfb
execution mode it must be the last pre-rasterization shader stage"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
"text": " If the pipeline is being created with pre-rasterization shader state, and a VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream
value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with Position
, PointSize
, ClipDistance
, or CullDistance
must be decorated with identical Stream
values that match the rasterizationStream
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
"text": " If the pipeline is being created with pre-rasterization shader state, and VkPipelineRasterizationStateStreamCreateInfoEXT::rasterizationStream
is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with Position
, PointSize
, ClipDistance
, or CullDistance
must be decorated with a Stream
value of zero, or must not specify the Stream
decoration"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
"text": " If the pipeline is being created with pre-rasterization shader state, and the last pre-rasterization shader stage is a geometry shader, and that geometry shader uses the GeometryStreams
capability, then VkPhysicalDeviceTransformFeedbackFeaturesEXT
::geometryStreams
feature must be enabled"
}
],
"(VK_EXT_transform_feedback)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
"text": " If the pipeline is being created with pre-rasterization shader state, and there are any mesh shader stages in the pipeline there must not be any shader stage in the pipeline with a Xfb
execution mode"
}
],
"(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766",
"text": " If the pipeline is being created with pre-rasterization shader state and at least one of fragment output interface state or fragment shader state, and pMultisampleState
is not NULL
, the lineRasterizationMode
member of a VkPipelineRasterizationLineStateCreateInfoEXT structure included in the pNext
chain of pRasterizationState
is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
or VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the alphaToCoverageEnable
, alphaToOneEnable
, and sampleShadingEnable
members of pMultisampleState
must all be VK_FALSE
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767",
"text": " If the pipeline is being created with pre-rasterization shader state, the stippledLineEnable
member of VkPipelineRasterizationLineStateCreateInfoEXT is VK_TRUE
, and no element of the pDynamicStates
member of pDynamicState
is VK_DYNAMIC_STATE_LINE_STIPPLE_EXT
, then the lineStippleFactor
member of VkPipelineRasterizationLineStateCreateInfoEXT must be in the range [1,256]"
}
],
"(VK_KHR_pipeline_library)+!(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03371",
"text": " flags
must not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
}
],
"(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03372",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03373",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03374",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03375",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03376",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03377",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03577",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03578",
"text": " All elements of the pDynamicStates
member of pDynamicState
must not be VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
"
}
],
"(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04947",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378",
"text": " If the extendedDynamicState
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_CULL_MODE
, VK_DYNAMIC_STATE_FRONT_FACE
, VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
, VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
, VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
, VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
, VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE
, VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE
, VK_DYNAMIC_STATE_DEPTH_COMPARE_OP
, VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE
, VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE
, or VK_DYNAMIC_STATE_STENCIL_OP
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07065",
"text": " If the pipeline is being created with pre-rasterization shader state, and includes a mesh shader, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY
, or VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04868",
"text": " If the extendedDynamicState2
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
, VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
, or VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07066",
"text": " If the pipeline is being created with pre-rasterization shader state, and includes a mesh shader, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE
, or VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
"
}
],
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02877",
"text": " If flags
includes VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
, then the deviceGeneratedCommands
feature must be enabled"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02966",
"text": " If the pipeline is being created with pre-rasterization shader state and flags
includes VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
, then all stages must not specify Xfb
execution mode"
}
],
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878",
"text": " If the pipelineCreationCacheControl
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
or VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
"
}
],
"(VK_EXT_pipeline_protected_access)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineProtectedAccess-07368",
"text": " If the pipelineProtectedAccess
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
or VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07369",
"text": " flags
must not include both VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
and VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
"
}
],
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be greater than or equal to 1
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be greater than or equal to 1
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be a power-of-two value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be a power-of-two value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
must be less than or equal to 4
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must be less than or equal to 4
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the pipelineFragmentShadingRate
feature is not enabled, VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.width
and VkPipelineFragmentShadingRateStateCreateInfoKHR::fragmentSize.height
must both be equal to 1
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06567",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::combinerOps
[0] must be a valid VkFragmentShadingRateCombinerOpKHR value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06568",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateStateCreateInfoKHR::combinerOps
[1] must be a valid VkFragmentShadingRateCombinerOpKHR value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the primitiveFragmentShadingRate
feature is not enabled, VkPipelineFragmentShadingRateStateCreateInfoKHR::combinerOps
[0] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the attachmentFragmentShadingRate
feature is not enabled, VkPipelineFragmentShadingRateStateCreateInfoKHR::combinerOps
[1] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504",
"text": " If the pipeline is being created with pre-rasterization shader state and the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and entry points specified in pStages
write to the ViewportIndex
built-in, they must not also write to the PrimitiveShadingRateKHR
built-in"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506",
"text": " If the pipeline is being created with pre-rasterization shader state or fragment shader state, the fragmentShadingRateNonTrivialCombinerOps
limit is not supported, and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, elements of VkPipelineFragmentShadingRateStateCreateInfoKHR::combinerOps
must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
or VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503",
"text": " If the pipeline is being created with pre-rasterization shader state and the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
is not included in pDynamicState->pDynamicStates
, and VkPipelineViewportStateCreateInfo::viewportCount
is greater than 1
, entry points specified in pStages
must not write to the PrimitiveShadingRateKHR
built-in"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_viewport_array2)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505",
"text": " If the pipeline is being created with pre-rasterization shader state and the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, and entry points specified in pStages
write to the ViewportMaskNV
built-in, they must not also write to the PrimitiveShadingRateKHR
built-in"
}
],
"(VK_NV_fragment_shading_rate_enums)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-06569",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateType
must be a valid VkFragmentShadingRateTypeNV value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06570",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must be a valid VkFragmentShadingRateNV value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06571",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps
[0] must be a valid VkFragmentShadingRateCombinerOpKHR value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-06572",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps
[1] must be a valid VkFragmentShadingRateCombinerOpKHR value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04569",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the fragmentShadingRateEnums
feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRateType
must be equal to VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04570",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the pipelineFragmentShadingRate
feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must be equal to VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04571",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the primitiveFragmentShadingRate
feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps
[0] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04572",
"text": " If the pipeline is being created with fragment shader state and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, and the attachmentFragmentShadingRate
feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps
[1] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04573",
"text": " If the pipeline is being created with fragment shader state, and the fragmentShadingRateNonTrivialCombinerOps
limit is not supported and VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR
is not included in pDynamicState->pDynamicStates
, elements of VkPipelineFragmentShadingRateEnumStateCreateInfoNV::combinerOps
must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
or VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-04574",
"text": " If the pipeline is being created with fragment shader state, and the supersampleFragmentShadingRates
feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must not be equal to VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV
, VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV
, VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV
, or VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-04575",
"text": " If the pipeline is being created with fragment shader state, and the noInvocationFragmentShadingRates
feature is not enabled, VkPipelineFragmentShadingRateEnumStateCreateInfoNV::shadingRate
must not be equal to VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV
"
}
],
"(VK_EXT_vertex_input_dynamic_state)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-07067",
"text": " If the pipeline is being created with pre-rasterization shader state, and includes a mesh shader, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
"
}
],
"!(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-None-06573",
"text": " The pipeline must be created with a complete set of state"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-06600",
"text": " pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-06601",
"text": " pRasterizationState
must be a valid pointer to a valid VkPipelineRasterizationStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-06602",
"text": " layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06603",
"text": " If renderPass
is not VK_NULL_HANDLE, renderPass
must be a valid VkRenderPass handle"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-06604",
"text": " stageCount
must be greater than 0
"
}
],
"(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04800",
"text": " If the colorWriteEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
"
}
],
"(VK_QCOM_render_pass_shader_resolve)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationSamples-04899",
"text": " If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve
extension is enabled, and if subpass has any input attachments, and if the subpass description contains VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
, then the sample count of the input attachments must equal rasterizationSamples
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleShadingEnable-04900",
"text": " If the pipeline is being created with fragment shader state, and the VK_QCOM_render_pass_shader_resolve
extension is enabled, and if the subpass description contains VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
, then sampleShadingEnable
must be false"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04901",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, then the subpass must be the last subpass in a subpass dependency chain"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-04902",
"text": " If flags
includes VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM
, and if pResolveAttachments
is not NULL
, then each resolve attachment must be VK_ATTACHMENT_UNUSED
"
}
],
"!(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06574",
"text": " If the pipeline is being created with pre-rasterization shader state, fragment shader state, or fragment output interface state, renderPass
must be a valid render pass object"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06575",
"text": " If the pipeline is being created with pre-rasterization shader state, fragment shader state, or fragment output interface state, renderPass
must be VK_NULL_HANDLE or a valid render pass object"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-dynamicRendering-06576",
"text": " If the dynamicRendering
feature is not enabled and the pipeline is being created with pre-rasterization shader state, fragment shader state, or fragment output interface state, renderPass
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-multiview-06577",
"text": " If the multiview
feature is not enabled, the pipeline is being created with pre-rasterization shader state, fragment shader state, or fragment output interface state, and renderPass
is VK_NULL_HANDLE, VkPipelineRenderingCreateInfo::viewMask
must be 0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06578",
"text": " If the pipeline is being created with pre-rasterization shader state, fragment shader state, or fragment output interface state, and renderPass
is VK_NULL_HANDLE, the index of the most significant bit in VkPipelineRenderingCreateInfo::viewMask
must be less than maxMultiviewViewCount
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06579",
"text": " If the pipeline is being created with fragment output interface state, and renderPass
is VK_NULL_HANDLE, and VkPipelineRenderingCreateInfo::colorAttachmentCount
is not 0, VkPipelineRenderingCreateInfo::pColorAttachmentFormats
must be a valid pointer to an array of colorAttachmentCount
valid VkFormat values"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06580",
"text": " If the pipeline is being created with fragment output interface state, and renderPass
is VK_NULL_HANDLE, each element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06583",
"text": " If the pipeline is being created with fragment output interface state, and renderPass
is VK_NULL_HANDLE, VkPipelineRenderingCreateInfo::depthAttachmentFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06584",
"text": " If the pipeline is being created with fragment output interface state, and renderPass
is VK_NULL_HANDLE, VkPipelineRenderingCreateInfo::stencilAttachmentFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06585",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, and VkPipelineRenderingCreateInfo::depthAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format with potential format features that include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06586",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, and VkPipelineRenderingCreateInfo::stencilAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format with potential format features that include VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06587",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, and VkPipelineRenderingCreateInfo::depthAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format that includes a depth aspect"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06588",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, and VkPipelineRenderingCreateInfo::stencilAttachmentFormat
is not VK_FORMAT_UNDEFINED
, it must be a format that includes a stencil aspect"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06589",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, VkPipelineRenderingCreateInfo::depthAttachmentFormat
is not VK_FORMAT_UNDEFINED
, and VkPipelineRenderingCreateInfo::stencilAttachmentFormat
is not VK_FORMAT_UNDEFINED
, depthAttachmentFormat
must equal stencilAttachmentFormat
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06053",
"text": " If renderPass
is VK_NULL_HANDLE, the pipeline is being created with fragment shader state and fragment output interface state, and either of VkPipelineRenderingCreateInfo::depthAttachmentFormat
or VkPipelineRenderingCreateInfo::stencilAttachmentFormat
are not VK_FORMAT_UNDEFINED
, pDepthStencilState
must be a valid pointer to a valid VkPipelineDepthStencilStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06054",
"text": " If renderPass
is VK_NULL_HANDLE, the pipeline is being created with fragment output interface state, and VkPipelineRenderingCreateInfo::colorAttachmentCount
is not equal to 0
, pColorBlendState
must be a valid pointer to a valid VkPipelineColorBlendStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06055",
"text": " If renderPass
is VK_NULL_HANDLE and the pipeline is being created with fragment output interface state, pColorBlendState->attachmentCount
must be equal to VkPipelineRenderingCreateInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06056",
"text": " If renderPass
is VK_NULL_HANDLE and the pipeline is being created with fragment shader state the fragment shader must not read from any input attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+!(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06581",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, and any element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
is not VK_FORMAT_UNDEFINED
, that format must be a format with potential format features that include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06582",
"text": " If the pipeline is being created with fragment output interface state, renderPass
is VK_NULL_HANDLE, and any element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
is not VK_FORMAT_UNDEFINED
, that format must be a format with potential format features that include VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06590",
"text": " If renderPass
is VK_NULL_HANDLE and the pipeline is being created with fragment shader state but not fragment output interface state, pDepthStencilState
must be a valid pointer to a valid VkPipelineDepthStencilStateCreateInfo structure"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_multiview,VK_VERSION_1_1)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06057",
"text": " If renderPass
is VK_NULL_HANDLE, the pipeline is being created with pre-rasterization shader state, the viewMask
member of a VkPipelineRenderingCreateInfo structure included in the pNext
chain is not 0
, and the multiviewTessellationShader
feature is not enabled, then pStages
must not include tessellation shaders"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06058",
"text": " If renderPass
is VK_NULL_HANDLE, the pipeline is being created with pre-rasterization shader state, the viewMask
member of a VkPipelineRenderingCreateInfo structure included in the pNext
chain is not 0
, and the multiviewGeometryShader
feature is not enabled, then pStages
must not include a geometry shader"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06059",
"text": " If renderPass
is VK_NULL_HANDLE, the pipeline is being created with pre-rasterization shader state, and the viewMask
member of a VkPipelineRenderingCreateInfo structure included in the pNext
chain is not 0
, shaders in pStages
must not include variables decorated with the Layer
built-in decoration in their interfaces"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06061",
"text": " If the pipeline is being created with fragment shader state and renderPass
is VK_NULL_HANDLE, fragment shaders in pStages
must not include the InputAttachment
capability"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06062",
"text": " If the pipeline is being created with fragment output interface state and renderPass
is VK_NULL_HANDLE, for each color attachment format defined by the pColorAttachmentFormats
member of VkPipelineRenderingCreateInfo, if its potential format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06063",
"text": " If the pipeline is being created with fragment output interface state and renderPass
is VK_NULL_HANDLE, if the pNext
chain includes VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV
, the colorAttachmentCount
member of that structure must be equal to the value of VkPipelineRenderingCreateInfo::colorAttachmentCount
"
}
],
"(VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06591",
"text": " If pStages
includes a fragment shader stage, and the fragment shader declares the EarlyFragmentTests
execution mode, the flags
member of VkPipelineDepthStencilStateCreateInfo must not include VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
or VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06484",
"text": " If the pipeline is being created with fragment output interface state and the flags
member of VkPipelineColorBlendStateCreateInfo includes VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT
subpass
must have been created with VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06485",
"text": " If the pipeline is being created with fragment output interface state and the flags
member of VkPipelineDepthStencilStateCreateInfo includes VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
, subpass
must have been created with VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06486",
"text": " If the pipeline is being created with fragment output interface state and the flags
member of VkPipelineDepthStencilStateCreateInfo includes VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
, subpass
must have been created with VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
"
}
],
"(VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06482",
"text": " If the pipeline is being created with fragment output interface state and the flags
member of VkPipelineColorBlendStateCreateInfo includes VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT
, renderpass
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06483",
"text": " If the pipeline is being created with fragment output interface state and the flags
member of VkPipelineDepthStencilStateCreateInfo includes VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
or VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
, renderpass
must not be VK_NULL_HANDLE"
}
],
"(VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pColorAttachmentSamples-06592",
"text": " If the fragment output interface state, elements of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV must be valid VkSampleCountFlagBits values"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-depthStencilAttachmentSamples-06593",
"text": " If the fragment output interface state and the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV is not 0, it must be a valid VkSampleCountFlagBits value"
}
],
"(VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineStageCreationFeedbackCount-06594",
"text": " If VkPipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCount
is not 0
, it must be equal to stageCount
"
}
],
"(VK_NVX_multiview_per_view_attributes)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-06595",
"text": " If renderPass
is VK_NULL_HANDLE, the pipeline is being created with pre-rasterization shader state or fragment shader state, and VkMultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnly
is VK_TRUE
then VkMultiviewPerViewAttributesInfoNVX::perViewAttributes
must also be VK_TRUE
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06596",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, the value of VkMultiviewPerViewAttributesInfoNVX::perViewAttributes
specified in both this pipeline and the library must be equal"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06597",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, the value of VkMultiviewPerViewAttributesInfoNVX::perViewAttributes
specified in both libraries must be equal"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06598",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, the value of VkMultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnly
specified in both this pipeline and the library must be equal"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06599",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, the value of VkMultiviewPerViewAttributesInfoNVX::perViewAttributesPositionXOnly
specified in both libraries must be equal"
}
],
"!(VK_EXT_graphics_pipeline_library)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-06605",
"text": " If the pNext
chain includes an instance of VkGraphicsPipelineShaderGroupsCreateInfoNV, its groupCount
member must be greater than 0
"
}
],
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06606",
"text": " If the graphicsPipelineLibrary
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-graphicsPipelineLibrary-06607",
"text": " If the graphicsPipelineLibrary
feature is not enabled, the pipeline must be created with a complete set of state"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06608",
"text": " If the pipeline is being created with all possible state subsets, flags
must not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06609",
"text": " If flags
includes VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT
, pipeline libraries included via VkPipelineLibraryCreateInfoKHR must have been created with VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06610",
"text": " If flags
includes VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
, pipeline libraries included via VkPipelineLibraryCreateInfoKHR must have been created with VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06611",
"text": " Any pipeline libraries included via VkPipelineLibraryCreateInfoKHR::pLibraries
must not include any state subset already defined by this structure or defined by any other pipeline library in VkPipelineLibraryCreateInfoKHR::pLibraries
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06612",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, and layout
was not created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, then the layout
used by this pipeline and the library must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06613",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and the layout
specified by either library was not created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, then the layout
used by each library must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06614",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and layout
was created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, then the layout
used by the library must also have been created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06615",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and the layout
specified by either library was created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, then the layout
used by both libraries must have been created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06616",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and layout
was created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, elements of the pSetLayouts
array which layout
was created with that are not VK_NULL_HANDLE must be identically defined to the element at the same index of pSetLayouts
used to create the library’s layout
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06617",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and the layout
specified by either library was created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, elements of the pSetLayouts
array which either layout
was created with that are not VK_NULL_HANDLE must be identically defined to the element at the same index of pSetLayouts
used to create the other library’s layout
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06618",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, any descriptor set layout N specified by layout
in both this pipeline and the library which include bindings accessed by shader stages in each must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06619",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, any descriptor set layout N specified by layout
in both libraries which include bindings accessed by shader stages in each must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06620",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, push constants specified in layout
in both this pipeline and the library which are available to shader stages in each must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06621",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, push constants specified in layout
in both this pipeline and the library which are available to shader stages in each must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06679",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and any element of the pSetLayouts
array which layout
was created with was VK_NULL_HANDLE, then the corresponding element of the pSetLayouts
array used to create the library’s layout
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06680",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and any element of the pSetLayouts
array used to create the library’s layout
was VK_NULL_HANDLE, then the corresponding element of the pSetLayouts
array used to create this pipeline’s layout
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06681",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and any element of the pSetLayouts
array used to create each library’s layout
was VK_NULL_HANDLE, then the corresponding element of the pSetLayouts
array used to create the other library’s layout
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06756",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and any element of the pSetLayouts
array which layout
was created with was VK_NULL_HANDLE, then the corresponding element of the pSetLayouts
array used to create the library’s layout
must not have shader bindings for shaders in the other subset"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06757",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other subset, and any element of the pSetLayouts
array used to create the library’s layout
was VK_NULL_HANDLE, then the corresponding element of the pSetLayouts
array used to create this pipeline’s layout
must not have shader bindings for shaders in the other subset"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06758",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and any element of the pSetLayouts
array used to create each library’s layout
was VK_NULL_HANDLE, then the corresponding element of the pSetLayouts
array used to create the other library’s layout
must not have shader bindings for shaders in the other subset"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06682",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes both VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, layout
must have been created with no elements of the pSetLayouts
array set to VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06683",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and pRasterizationState
->rasterizerDiscardEnable
is VK_TRUE
, layout
must have been created with no elements of the pSetLayouts
array set to VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06684",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the value of subpass
must be equal to that used to create the library"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06623",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, and another element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the value of subpass
used to create each library must be identical"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderpass-06624",
"text": " If renderpass
is not VK_NULL_HANDLE, VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, renderPass
must be compatible with that used to create the library"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06628",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, and another element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the renderPass
objects used to create each library must be compatible or all equal to VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-06629",
"text": " If the pipeline is being created with fragment shader state pMultisampleState
must be NULL
or a valid pointer to a valid VkPipelineMultisampleStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06633",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
with a pMultisampleState
that was not NULL
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, pMultisampleState
must be identically defined to that used to create the library"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06634",
"text": " If an element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
with a pMultisampleState
that was not NULL
, and if VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, pMultisampleState
must be identically defined to that used to create the library"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06635",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
with a pMultisampleState
that was not NULL
, and if a different element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, the pMultisampleState
used to create each library must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06636",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
and a value of pMultisampleState->sampleShading
equal VK_TRUE
, and if a different element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, the pMultisampleState
used to create each library must be identically defined"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06637",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, pMultisampleState->sampleShading
is VK_TRUE
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
was created with VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, the pMultisampleState
used to create that library must be identically defined pMultisampleState
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06640",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo structures"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06641",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, pRasterizationState
must be a valid pointer to a valid VkPipelineRasterizationStateCreateInfo structure"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06642",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06643",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, and renderPass
is not VK_NULL_HANDLE, renderPass
must be a valid VkRenderPass handle"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06644",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, stageCount
must be greater than 0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06729",
"text": " If flags
includes VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT
, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a VkPipelineLayout created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, then layout
must be a valid VkPipelineLayout that is compatible with the union of the libraries' pipeline layouts other than the inclusion/exclusion of VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06730",
"text": " If flags
does not include VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT
, the pipeline includes a complete set of state specified entirely by libraries, and each library was created with a VkPipelineLayout created with VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT
, then layout
must be a valid VkPipelineLayout that is compatible with the union of the libraries' pipeline layouts"
}
],
"(VK_EXT_graphics_pipeline_library)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderpass-06625",
"text": " If renderpass
is VK_NULL_HANDLE, VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, the value of renderPass
used to create that library must also be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06626",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, and renderPass
is VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::viewMask
used by this pipeline and that specified by the library must be identical"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06627",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes at least one of and no more than two of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
, VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT
, another element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes one of the other flags, and renderPass
was VK_NULL_HANDLE for both libraries, the value of VkPipelineRenderingCreateInfo::viewMask
set by each library must be identical"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-renderpass-06631",
"text": " If the pipeline is being created with fragment shader state and renderpass
is not VK_NULL_HANDLE, then pMultisampleState
must not be NULL
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-Input-06632",
"text": " If the pipeline is being created with fragment shader state with a fragment shader that either enables sample shading or decorates any variable in the Input
storage class with Sample
, then pMultisampleState
must not be NULL
"
}
],
"(VK_EXT_graphics_pipeline_library)+!(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pMultisampleState-06630",
"text": " If the pipeline is being created with fragment shader state pMultisampleState
must not be NULL
"
}
],
"(VK_EXT_graphics_pipeline_library)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06638",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
includes only one of VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
or VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, and an element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes the other flag, values specified in VkPipelineFragmentShadingRateStateCreateInfoKHR for both this pipeline and that library must be identical"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06639",
"text": " If one element of VkPipelineLibraryCreateInfoKHR::pLibraries
includes VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT
and another element includes VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT
, values specified in VkPipelineFragmentShadingRateStateCreateInfoKHR for both this pipeline and that library must be identical"
}
],
"(VK_EXT_graphics_pipeline_library)+(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-06645",
"text": " If VkGraphicsPipelineLibraryCreateInfoEXT::flags
is non-zero, if flags
includes VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
, any libraries must have also been created with VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06646",
"text": " If VkPipelineLibraryCreateInfoKHR::pLibraries
includes more than one library, and any library was created with VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
, all libraries must have also been created with VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-pLibraries-06647",
"text": " If VkPipelineLibraryCreateInfoKHR::pLibraries
includes at least one library, VkGraphicsPipelineLibraryCreateInfoEXT::flags
is non-zero, and any library was created with VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
, flags
must include VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
"
}
],
"(VK_EXT_graphics_pipeline_library)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-libraryCount-06648",
"text": " If the pipeline is not created with a complete set of state, or VkPipelineLibraryCreateInfoKHR::libraryCount
is not 0
, VkGraphicsPipelineShaderGroupsCreateInfoNV::groupCount
and VkGraphicsPipelineShaderGroupsCreateInfoNV::pipelineCount
must be 0
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-libraryCount-06649",
"text": " If the pipeline is created with a complete set of state, VkPipelineLibraryCreateInfoKHR::libraryCount
is 0
, and the pNext
chain includes an instance of VkGraphicsPipelineShaderGroupsCreateInfoNV, VkGraphicsPipelineShaderGroupsCreateInfoNV::groupCount
must be greater than 0
"
}
],
"(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06759",
"text": " If conservativePointAndLineRasterization
is not supported; the pipeline is being created with vertex input state and pre-rasterization shader state; the pipeline does not include a geometry shader; and the value of VkPipelineInputAssemblyStateCreateInfo::topology
is VK_PRIMITIVE_TOPOLOGY_POINT_LIST
, VK_PRIMITIVE_TOPOLOGY_LINE_LIST
, or VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
, then VkPipelineRasterizationConservativeStateCreateInfoEXT::conservativeRasterizationMode
must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06760",
"text": " If conservativePointAndLineRasterization
is not supported, the pipeline is being created with pre-rasterization shader state, and the pipeline includes a geometry shader with either the OutputPoints
or OutputLineStrip
execution modes, VkPipelineRasterizationConservativeStateCreateInfoEXT::conservativeRasterizationMode
must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_conservative_rasterization)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-conservativePointAndLineRasterization-06761",
"text": " If conservativePointAndLineRasterization
is not supported, the pipeline is being created with pre-rasterization shader state, and the pipeline includes a mesh shader with either the OutputPoints
or OutputLinesNV
execution modes, VkPipelineRasterizationConservativeStateCreateInfoEXT::conservativeRasterizationMode
must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3TessellationDomainOrigin-07370",
"text": " If the extendedDynamicState3TessellationDomainOrigin
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClampEnable-07371",
"text": " If the extendedDynamicState3DepthClampEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3PolygonMode-07372",
"text": " If the extendedDynamicState3PolygonMode
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_POLYGON_MODE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationSamples-07373",
"text": " If the extendedDynamicState3RasterizationSamples
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleMask-07374",
"text": " If the extendedDynamicState3SampleMask
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToCoverageEnable-07375",
"text": " If the extendedDynamicState3AlphaToCoverageEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3AlphaToOneEnable-07376",
"text": " If the extendedDynamicState3AlphaToOneEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LogicOpEnable-07377",
"text": " If the extendedDynamicState3LogicOpEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEnable-07378",
"text": " If the extendedDynamicState3ColorBlendEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendEquation-07379",
"text": " If the extendedDynamicState3ColorBlendEquation
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorWriteMask-07380",
"text": " If the extendedDynamicState3ColorWriteMask
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RasterizationStream-07381",
"text": " If the extendedDynamicState3RasterizationStream
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ConservativeRasterizationMode-07382",
"text": " If the extendedDynamicState3ConservativeRasterizationMode
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ExtraPrimitiveOverestimationSize-07383",
"text": " If the extendedDynamicState3ExtraPrimitiveOverestimationSize
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipEnable-07384",
"text": " If the extendedDynamicState3DepthClipEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3SampleLocationsEnable-07385",
"text": " If the extendedDynamicState3SampleLocationsEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ColorBlendAdvanced-07386",
"text": " If the extendedDynamicState3ColorBlendAdvanced
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ProvokingVertexMode-07387",
"text": " If the extendedDynamicState3ProvokingVertexMode
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineRasterizationMode-07388",
"text": " If the extendedDynamicState3LineRasterizationMode
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3LineStippleEnable-07389",
"text": " If the extendedDynamicState3LineStippleEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3DepthClipNegativeOneToOne-07390",
"text": " If the extendedDynamicState3DepthClipNegativeOneToOne
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportWScalingEnable-07391",
"text": " If the extendedDynamicState3ViewportWScalingEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ViewportSwizzle-07392",
"text": " If the extendedDynamicState3ViewportSwizzle
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorEnable-07393",
"text": " If the extendedDynamicState3CoverageToColorEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageToColorLocation-07394",
"text": " If the extendedDynamicState3CoverageToColorLocation
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationMode-07395",
"text": " If the extendedDynamicState3CoverageModulationMode
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTableEnable-07396",
"text": " If the extendedDynamicState3CoverageModulationTableEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageModulationTable-07397",
"text": " If the extendedDynamicState3CoverageModulationTable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3CoverageReductionMode-07398",
"text": " If the extendedDynamicState3CoverageReductionMode
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3RepresentativeFragmentTestEnable-07399",
"text": " If the extendedDynamicState3RepresentativeFragmentTestEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-extendedDynamicState3ShadingRateImageEnable-07400",
"text": " If the extendedDynamicState3ShadingRateImageEnable
feature is not enabled, there must be no element of the pDynamicStates
member of pDynamicState
set to VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV
"
}
],
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-07401",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
"
}
]
},
"VkPipelineRenderingCreateInfo": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkPipelineRenderingCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO
"
}
]
},
"VkGraphicsPipelineLibraryCreateInfoEXT": {
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkGraphicsPipelineLibraryCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-parameter",
"text": " flags
must be a valid combination of VkGraphicsPipelineLibraryFlagBitsEXT values"
},
{
"vuid": "VUID-VkGraphicsPipelineLibraryCreateInfoEXT-flags-requiredbitmask",
"text": " flags
must not be 0
"
}
]
},
"VkPipelineDynamicStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
"text": " Each element of pDynamicStates
must be unique"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
"text": " If dynamicStateCount
is not 0
, pDynamicStates
must be a valid pointer to an array of dynamicStateCount
valid VkDynamicState values"
}
]
},
"VkGraphicsPipelineShaderGroupsCreateInfoNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879",
"text": " groupCount
must be at least 1
and as maximum VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::maxGraphicsShaderGroupCount
"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880",
"text": " The sum of groupCount
including those groups added from referenced pPipelines
must also be as maximum VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::maxGraphicsShaderGroupCount
"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881",
"text": " The state of the first element of pGroups
must match its equivalent within the parent’s VkGraphicsPipelineCreateInfo"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882",
"text": " Each element of pGroups
must in combination with the rest of the pipeline state yield a valid state configuration"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886",
"text": " Each element of pPipelines
must have been created with identical state to the pipeline currently created except the state that can be overridden by VkGraphicsShaderGroupCreateInfoNV"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887",
"text": " The deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter",
"text": " If groupCount
is not 0
, pGroups
must be a valid pointer to an array of groupCount
valid VkGraphicsShaderGroupCreateInfoNV structures"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter",
"text": " If pipelineCount
is not 0
, pPipelines
must be a valid pointer to an array of pipelineCount
valid VkPipeline handles"
}
],
"(VK_NV_device_generated_commands)+!(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02883",
"text": " All elements of pGroups
must use the same shader stage combinations"
}
],
"(VK_NV_device_generated_commands)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884",
"text": " All elements of pGroups
must use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is valid"
},
{
"vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885",
"text": " Mesh and regular primitive shading stages cannot be mixed across pGroups
"
}
]
},
"VkGraphicsShaderGroupCreateInfoNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888",
"text": " For stageCount
, the same restrictions as in VkGraphicsPipelineCreateInfo::stageCount
apply"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889",
"text": " For pStages
, the same restrictions as in VkGraphicsPipelineCreateInfo::pStages
apply"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890",
"text": " For pVertexInputState
, the same restrictions as in VkGraphicsPipelineCreateInfo::pVertexInputState
apply"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891",
"text": " For pTessellationState
, the same restrictions as in VkGraphicsPipelineCreateInfo::pTessellationState
apply"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter",
"text": " pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo structures"
},
{
"vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength",
"text": " stageCount
must be greater than 0
"
}
]
},
"vkCreateRayTracingPipelinesNV": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and the basePipelineIndex
member of that same element is not -1
, basePipelineIndex
must be less than the index into pCreateInfos
that corresponds to that element"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416",
"text": " If the flags
member of any element of pCreateInfos
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, the base pipeline must have been created with the VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT
flag set"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of createInfoCount
valid VkRayTracingPipelineCreateInfoNV structures"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
"text": " pPipelines
must be a valid pointer to an array of createInfoCount
VkPipeline handles"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
"text": " createInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03816",
"text": " flags
must not contain the VK_PIPELINE_CREATE_DISPATCH_BASE
flag"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903",
"text": " If pipelineCache
was created with VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
, host access to pipelineCache
must be externally synchronized"
}
]
},
"vkCreateRayTracingPipelinesKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415",
"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-vkCreateRayTracingPipelinesKHR-flags-03416",
"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-vkCreateRayTracingPipelinesKHR-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracingPipeline-03586",
"text": " The rayTracingPipeline
feature must be enabled"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter",
"text": " If pipelineCache
is not VK_NULL_HANDLE, pipelineCache
must be a valid VkPipelineCache handle"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter",
"text": " pCreateInfos
must be a valid pointer to an array of createInfoCount
valid VkRayTracingPipelineCreateInfoKHR structures"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter",
"text": " pPipelines
must be a valid pointer to an array of createInfoCount
VkPipeline handles"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength",
"text": " createInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent",
"text": " If pipelineCache
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03816",
"text": " flags
must not contain the VK_PIPELINE_CREATE_DISPATCH_BASE
flag"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903",
"text": " If pipelineCache
was created with VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
, host access to pipelineCache
must be externally synchronized"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)+(VK_KHR_deferred_host_operations)": [
{
"vuid": "VUID-vkCreateRayTracingPipelinesKHR-deferredOperation-03587",
"text": " If deferredOperation
is not VK_NULL_HANDLE, the flags
member of elements of pCreateInfos
must not include VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
"
}
]
},
"VkRayTracingPipelineCreateInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is -1
, basePipelineHandle
must be a valid handle to a ray tracing VkPipeline
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is VK_NULL_HANDLE, basePipelineIndex
must be a valid index into the calling command’s pCreateInfos
parameter"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is not -1
, basePipelineHandle
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is not VK_NULL_HANDLE, basePipelineIndex
must be -1
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426",
"text": " The shader code for the entry points identified by pStages
, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427",
"text": " layout
must be consistent with all shaders specified in pStages
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428",
"text": " The number of resources in layout
accessible to each shader stage that is used by the pipeline must be less than or equal to VkPhysicalDeviceLimits::maxPerStageResources
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-06232",
"text": " The stage
member of at least one element of pStages
must be VK_SHADER_STAGE_RAYGEN_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457",
"text": " maxRecursionDepth
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxRecursionDepth
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-06898",
"text": " The stage
value in all pStages
elements must be one of VK_SHADER_STAGE_RAYGEN_BIT_KHR
, VK_SHADER_STAGE_ANY_HIT_BIT_KHR
, VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
, VK_SHADER_STAGE_MISS_BIT_KHR
, VK_SHADER_STAGE_INTERSECTION_BIT_KHR
, or VK_SHADER_STAGE_CALLABLE_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineCreationFeedbackCreateInfo"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineCreateFlagBits values"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
"text": " pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo structures"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
"text": " pGroups
must be a valid pointer to an array of groupCount
valid VkRayTracingShaderGroupCreateInfoNV structures"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
"text": " stageCount
must be greater than 0
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
"text": " groupCount
must be greater than 0
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
"text": " Both of basePipelineHandle
, and layout
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904",
"text": " flags
must not include VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905",
"text": " If the pipelineCreationCacheControl
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
or VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957",
"text": " flags
must not include both VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV
and VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
at the same time"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456",
"text": " flags
must not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03588",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-04948",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineStageCreationFeedbackCount-06651",
"text": " If VkPipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCount
is not 0
, it must be equal to stageCount
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-07402",
"text": " flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
"
}
]
},
"VkRayTracingPipelineCreateInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is -1
, basePipelineHandle
must be a valid handle to a ray tracing VkPipeline
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422",
"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-VkRayTracingPipelineCreateInfoKHR-flags-03423",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineIndex
is not -1
, basePipelineHandle
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424",
"text": " If flags
contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT
flag, and basePipelineHandle
is not VK_NULL_HANDLE, basePipelineIndex
must be -1
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426",
"text": " The shader code for the entry points identified by pStages
, and the rest of the state identified by this structure must adhere to the pipeline linking rules described in the Shader Interfaces chapter"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427",
"text": " layout
must be consistent with all shaders specified in pStages
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428",
"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-VkRayTracingPipelineCreateInfoKHR-stage-03425",
"text": " If flags
does not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
, the stage
member of at least one element of pStages
, including those implicitly added by pLibraryInfo
, must be VK_SHADER_STAGE_RAYGEN_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxPipelineRayRecursionDepth-03589",
"text": " maxPipelineRayRecursionDepth
must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR::maxRayRecursionDepth
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03595",
"text": " If the VK_KHR_pipeline_library
extension is not enabled, pLibraryInfo
and pLibraryInterface
must be NULL
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, for any element of pGroups
with a type
of VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
or VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
, the anyHitShader
of that element must not be VK_SHADER_UNUSED_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, for any element of pGroups
with a type
of VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
or VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
, the closestHitShader
of that element must not be VK_SHADER_UNUSED_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03596",
"text": " If the rayTraversalPrimitiveCulling
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTraversalPrimitiveCulling-03597",
"text": " If the rayTraversalPrimitiveCulling
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-06546",
"text": " flags
must not include both VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
and VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03598",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
, rayTracingPipelineShaderGroupHandleCaptureReplay
must be enabled"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03599",
"text": " If VkPhysicalDeviceRayTracingPipelineFeaturesKHR::rayTracingPipelineShaderGroupHandleCaptureReplay
is VK_TRUE
and the pShaderGroupCaptureReplayHandle
member of any element of pGroups
is not NULL
, flags
must include VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03600",
"text": " If pLibraryInfo
is not NULL
and its libraryCount
is 0
, stageCount
must not be 0
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03601",
"text": " If pLibraryInfo
is not NULL
and its libraryCount
is 0
, groupCount
must not be 0
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicStates-03602",
"text": " Any element of the pDynamicStates
member of pDynamicState
must be VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-06899",
"text": " The stage
value in all pStages
elements must be one of VK_SHADER_STAGE_RAYGEN_BIT_KHR
, VK_SHADER_STAGE_ANY_HIT_BIT_KHR
, VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
, VK_SHADER_STAGE_MISS_BIT_KHR
, VK_SHADER_STAGE_INTERSECTION_BIT_KHR
, or VK_SHADER_STAGE_CALLABLE_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-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 VkPipelineCreationFeedbackCreateInfo or VkPipelineRobustnessCreateInfoEXT"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineCreateFlagBits values"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter",
"text": " If stageCount
is not 0
, pStages
must be a valid pointer to an array of stageCount
valid VkPipelineShaderStageCreateInfo structures"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter",
"text": " If groupCount
is not 0
, pGroups
must be a valid pointer to an array of groupCount
valid VkRayTracingShaderGroupCreateInfoKHR structures"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-parameter",
"text": " If pLibraryInfo
is not NULL
, pLibraryInfo
must be a valid pointer to a valid VkPipelineLibraryCreateInfoKHR structure"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter",
"text": " If pLibraryInterface
is not NULL
, pLibraryInterface
must be a valid pointer to a valid VkRayTracingPipelineInterfaceCreateInfoKHR structure"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pDynamicState-parameter",
"text": " If pDynamicState
is not NULL
, pDynamicState
must be a valid pointer to a valid VkPipelineDynamicStateCreateInfo structure"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-commonparent",
"text": " Both of basePipelineHandle
, and layout
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904",
"text": " flags
must not include VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905",
"text": " If the pipelineCreationCacheControl
feature is not enabled, flags
must not include VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
or VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465",
"text": " If flags
includes VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
, pLibraryInterface
must not be NULL
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03590",
"text": " If pLibraryInfo
is not NULL
and its libraryCount
member is greater than 0
, pLibraryInterface
must not be NULL
"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03591",
"text": " Each element of pLibraryInfo->pLibraries
must have been created with the value of maxPipelineRayRecursionDepth
equal to that in this pipeline"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03592",
"text": " If pLibraryInfo
is not NULL
, each element of its pLibraries
member must have been created with a layout
that is compatible with the layout
in this pipeline"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInfo-03593",
"text": " If pLibraryInfo
is not NULL
, each element of its pLibraries
member must have been created with values of the maxPipelineRayPayloadSize
and maxPipelineRayHitAttributeSize
members of pLibraryInterface
equal to those in this pipeline"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03594",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04718",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04719",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04720",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04721",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04722",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-04723",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
bit set"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_EXT_pipeline_creation_feedback,VK_VERSION_1_3)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineStageCreationFeedbackCount-06652",
"text": " If VkPipelineCreationFeedbackCreateInfo::pipelineStageCreationFeedbackCount
is not 0
, it must be equal to stageCount
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-07403",
"text": " If flags
includes VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
, each element of pLibraryInfo->pLibraries
must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT
bit set"
}
]
},
"VkRayTracingShaderGroupCreateInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
then generalShader
must be a valid index into VkRayTracingPipelineCreateInfoNV::pStages
referring to a shader of VK_SHADER_STAGE_RAYGEN_BIT_NV
, VK_SHADER_STAGE_MISS_BIT_NV
, or VK_SHADER_STAGE_CALLABLE_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV
then closestHitShader
, anyHitShader
, and intersectionShader
must be VK_SHADER_UNUSED_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV
then intersectionShader
must be a valid index into VkRayTracingPipelineCreateInfoNV::pStages
referring to a shader of VK_SHADER_STAGE_INTERSECTION_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV
then intersectionShader
must be VK_SHADER_UNUSED_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
"text": " closestHitShader
must be either VK_SHADER_UNUSED_NV
or a valid index into VkRayTracingPipelineCreateInfoNV::pStages
referring to a shader of VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
"text": " anyHitShader
must be either VK_SHADER_UNUSED_NV
or a valid index into VkRayTracingPipelineCreateInfoNV::pStages
referring to a shader of VK_SHADER_STAGE_ANY_HIT_BIT_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
"text": " type
must be a valid VkRayTracingShaderGroupTypeKHR value"
}
]
},
"VkRayTracingShaderGroupCreateInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
then generalShader
must be a valid index into VkRayTracingPipelineCreateInfoKHR::pStages
referring to a shader of VK_SHADER_STAGE_RAYGEN_BIT_KHR
, VK_SHADER_STAGE_MISS_BIT_KHR
, or VK_SHADER_STAGE_CALLABLE_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR
then closestHitShader
, anyHitShader
, and intersectionShader
must be VK_SHADER_UNUSED_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
then intersectionShader
must be a valid index into VkRayTracingPipelineCreateInfoKHR::pStages
referring to a shader of VK_SHADER_STAGE_INTERSECTION_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477",
"text": " If type
is VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
then intersectionShader
must be VK_SHADER_UNUSED_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478",
"text": " closestHitShader
must be either VK_SHADER_UNUSED_KHR
or a valid index into VkRayTracingPipelineCreateInfoKHR::pStages
referring to a shader of VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479",
"text": " anyHitShader
must be either VK_SHADER_UNUSED_KHR
or a valid index into VkRayTracingPipelineCreateInfoKHR::pStages
referring to a shader of VK_SHADER_STAGE_ANY_HIT_BIT_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03603",
"text": " If VkPhysicalDeviceRayTracingPipelineFeaturesKHR::rayTracingPipelineShaderGroupHandleCaptureReplayMixed
is VK_FALSE
then pShaderGroupCaptureReplayHandle
must not be provided if it has not been provided on a previous call to ray tracing pipeline creation"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03604",
"text": " If VkPhysicalDeviceRayTracingPipelineFeaturesKHR::rayTracingPipelineShaderGroupHandleCaptureReplayMixed
is VK_FALSE
then the caller must guarantee that no ray tracing pipeline creation commands with pShaderGroupCaptureReplayHandle
provided execute simultaneously with ray tracing pipeline creation commands without pShaderGroupCaptureReplayHandle
provided"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter",
"text": " type
must be a valid VkRayTracingShaderGroupTypeKHR value"
}
]
},
"VkRayTracingPipelineInterfaceCreateInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-maxPipelineRayHitAttributeSize-03605",
"text": " maxPipelineRayHitAttributeSize
must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR::maxRayHitAttributeSize
"
},
{
"vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetRayTracingShaderGroupHandlesKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-04619",
"text": " pipeline
must be a ray tracing pipeline"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050",
"text": " firstGroup
must be less than the number of shader groups in pipeline
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419",
"text": " The sum of firstGroup
and groupCount
must be less than or equal to the number of shader groups in pipeline
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420",
"text": " dataSize
must be at least VkPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleSize
{times} groupCount
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482",
"text": " pipeline
must not have been created with VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
}
]
},
"vkGetRayTracingCaptureReplayShaderGroupHandlesKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-04620",
"text": " pipeline
must be a ray tracing pipeline"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051",
"text": " firstGroup
must be less than the number of shader groups in pipeline
"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483",
"text": " The sum of firstGroup
and groupCount
must be less than or equal to the number of shader groups in pipeline
"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484",
"text": " dataSize
must be at least VkPhysicalDeviceRayTracingPipelinePropertiesKHR::shaderGroupHandleCaptureReplaySize
{times} groupCount
"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingPipelineShaderGroupHandleCaptureReplay-03606",
"text": " VkPhysicalDeviceRayTracingPipelineFeaturesKHR
::rayTracingPipelineShaderGroupHandleCaptureReplay
must be enabled to call this function"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-03607",
"text": " pipeline
must have been created with a flags
that included VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR
"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-06720",
"text": " pipeline
must not have been created with VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
}
]
},
"vkCompileDeferredNV": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-04621",
"text": " pipeline
must be a ray tracing pipeline"
},
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
"text": " pipeline
must have been created with VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV
"
},
{
"vuid": "VUID-vkCompileDeferredNV-shader-02238",
"text": " shader
must not have been called as a deferred compile before"
},
{
"vuid": "VUID-vkCompileDeferredNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetRayTracingShaderGroupStackSizeKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-04622",
"text": " pipeline
must be a ray tracing pipeline"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-group-03608",
"text": " The value of group
must be less than the number of shader groups in pipeline
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-03609",
"text": " The shader identified by groupShader
in group
must not be VK_SHADER_UNUSED_KHR
"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-groupShader-parameter",
"text": " groupShader
must be a valid VkShaderGroupShaderKHR value"
},
{
"vuid": "VUID-vkGetRayTracingShaderGroupStackSizeKHR-pipeline-parent",
"text": " pipeline
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdSetRayTracingPipelineStackSizeKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-pipelineStackSize-03610",
"text": " pipelineStackSize
must be large enough for any dynamic execution through the shaders in the ray tracing pipeline used by a subsequent trace call"
},
{
"vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdSetRayTracingPipelineStackSizeKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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-parameter",
"text": " flags
must be a valid combination of VkPipelineCacheCreateFlagBits values"
},
{
"vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
"text": " If initialDataSize
is not 0
, pInitialData
must be a valid pointer to an array of initialDataSize
bytes"
}
],
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892",
"text": " If the pipelineCreationCacheControl
feature is not enabled, flags
must not include VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT
"
}
]
},
"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
"
}
]
},
"VkPipelineCacheHeaderVersionOne": {
"core": [
{
"vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerSize-04967",
"text": " headerSize
must be 32"
},
{
"vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-04968",
"text": " headerVersion
must be VK_PIPELINE_CACHE_HEADER_VERSION_ONE
"
},
{
"vuid": "VUID-VkPipelineCacheHeaderVersionOne-headerVersion-parameter",
"text": " headerVersion
must be a valid VkPipelineCacheHeaderVersion value"
}
]
},
"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-constantID-04911",
"text": " The constantID
value of each element of pMapEntries
must be unique within pMapEntries
"
},
{
"vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
"text": " If mapEntryCount
is not 0
, pMapEntries
must be a valid pointer to an array of mapEntryCount
valid VkSpecializationMapEntry structures"
},
{
"vuid": "VUID-VkSpecializationInfo-pData-parameter",
"text": " If dataSize
is not 0
, pData
must be a valid pointer to an array of dataSize
bytes"
}
]
},
"VkSpecializationMapEntry": {
"core": [
{
"vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
"text": " For a constantID
specialization constant declared in a shader, size
must match the byte size of the constantID
. If the specialization constant is of type boolean
, size
must be the byte size of VkBool32
"
}
]
},
"VkPipelineLibraryCreateInfoKHR": {
"(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381",
"text": " Each element of pLibraries
must have been created with VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
},
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter",
"text": " If libraryCount
is not 0
, pLibraries
must be a valid pointer to an array of libraryCount
valid VkPipeline handles"
}
],
"(VK_KHR_pipeline_library)+(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-06855",
"text": " If any library in pLibraries
was created with a shader stage with VkPipelineShaderStageModuleIdentifierCreateInfoEXT and identifierSize
not equal to 0, the pipeline must be created with the VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT
flag set"
}
],
"(VK_KHR_pipeline_library)+(VK_EXT_pipeline_protected_access)": [
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07404",
"text": " If pipeline
is being created with VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
, every element of pLibraries
must have been created with VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07405",
"text": " If pipeline
is being created without VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
, every element of pLibraries
must have been created without VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07406",
"text": " If pipeline
is being created with VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
, every element of pLibraries
must have been created with VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
"
},
{
"vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pipeline-07407",
"text": " If pipeline
is being created without VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
, every element of pLibraries
must have been created without VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
"
}
]
},
"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 variableMultisampleRate
feature is not supported, pipeline
is a graphics pipeline, the current subpass uses no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline must match that set in the previous pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindPipeline-commonparent",
"text": " Both of commandBuffer
, and pipeline
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
"text": " If VkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations
is VK_FALSE
, and pipeline
is a graphics pipeline created with a VkPipelineSampleLocationsStateCreateInfoEXT structure having its sampleLocationsEnable
member set to VK_TRUE
but without VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
enabled then the current render pass instance must have been begun by specifying a VkRenderPassSampleLocationsBeginInfoEXT structure whose pPostSubpassSampleLocations
member contains an element with a subpassIndex
matching the current subpass index and the sampleLocationsInfo
member of that element must match the sampleLocationsInfo
specified in VkPipelineSampleLocationsStateCreateInfoEXT when the pipeline was created"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBindPipeline-None-02323",
"text": " This command must not be recorded when transform feedback is active"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR
, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR
, pipeline
must be a ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-06721",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR
, commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_pipeline_protected_access)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineProtectedAccess-07408",
"text": " If the pipelineProtectedAccess
feature is enabled, and commandBuffer
is a protected command buffer, pipeline
must have been created without VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineProtectedAccess-07409",
"text": " If the pipelineProtectedAccess
feature is enabled, and commandBuffer
is not a protected command buffer, pipeline
must have been created without VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT
"
}
],
"(VK_KHR_pipeline_library)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-03382",
"text": " pipeline
must not have been created with VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
set"
}
],
"(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-04808",
"text": " If commandBuffer
is a secondary command buffer with VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled and pipelineBindPoint
is VK_PIPELINE_BIND_POINT_GRAPHICS
, then the pipeline
must have been created with VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
or VK_DYNAMIC_STATE_VIEWPORT
, and VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
or VK_DYNAMIC_STATE_SCISSOR
enabled"
}
],
"(VK_NV_inherited_viewport_scissor,VK_EXT_discard_rectangles)": [
{
"vuid": "VUID-vkCmdBindPipeline-commandBuffer-04809",
"text": " If commandBuffer
is a secondary command buffer with VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled and pipelineBindPoint
is VK_PIPELINE_BIND_POINT_GRAPHICS
and pipeline
was created with VkPipelineDiscardRectangleStateCreateInfoEXT structure and its discardRectangleCount
member is not 0
, then the pipeline must have been created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
enabled"
}
],
"(VK_EXT_provoking_vertex)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-04881",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_GRAPHICS
and the provokingVertexModePerPipeline
limit is VK_FALSE
, then pipeline’s VkPipelineRasterizationProvokingVertexStateCreateInfoEXT::provokingVertexMode
must be the same as that of any other pipelines previously bound to this bind point within the current render pass instance, including any pipeline already bound when beginning the render pass instance"
}
],
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-04949",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-04950",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
, pipeline
must be a subpass shading pipeline"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-06195",
"text": " If pipeline
is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and commands using the previously bound graphics pipeline have been recorded within the render pass instance, then the value of VkPipelineRenderingCreateInfo::colorAttachmentCount
specified by this pipeline must match that set in the previous pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-06196",
"text": " If pipeline
is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and commands using the previously bound graphics pipeline have been recorded within the render pass instance, then the elements of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
specified by this pipeline must match that set in the previous pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-06197",
"text": " If pipeline
is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and commands using the previously bound graphics pipeline have been recorded within the render pass instance, then the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
specified by this pipeline must match that set in the previous pipeline"
},
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-06194",
"text": " If pipeline
is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and commands using the previously bound graphics pipeline have been recorded within the render pass instance, then the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
specified by this pipeline must match that set in the previous pipeline"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipeline-06856",
"text": " If pipeline
is a graphics pipeline, this command has been called inside a render pass instance started with vkCmdBeginRendering, and the pNext
chain of VkRenderingInfo includes a VkMultisampledRenderToSingleSampledInfoEXT structure with multisampledRenderToSingleSampledEnable
equal to VK_TRUE
, then the value of VkGraphicsPipelineCreateInfo::pMultisampleState
::rasterizationSamples
must be equal to VkMultisampledRenderToSingleSampledInfoEXT::rasterizationSamples
."
}
],
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-06653",
"text": " If pipelineBindPoint
is VK_PIPELINE_BIND_POINT_GRAPHICS
, pipeline
must have been created without VK_PIPELINE_CREATE_LIBRARY_BIT_KHR
"
}
]
},
"vkCmdBindPipelineShaderGroupNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893",
"text": " groupIndex
must be 0
or less than the effective VkGraphicsPipelineShaderGroupsCreateInfoNV::groupCount
including the referenced pipelines"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894",
"text": " The pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895",
"text": " The same restrictions as vkCmdBindPipeline apply as if the bound pipeline was created only with the Shader Group from the groupIndex
information"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896",
"text": " The deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent",
"text": " Both of commandBuffer
, and pipeline
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkGetPipelineExecutablePropertiesKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270",
"text": " The pipelineExecutableInfo
feature must be enabled"
},
{
"vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271",
"text": " The pipeline
member of pPipelineInfo
must have been created with device
"
},
{
"vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter",
"text": " pPipelineInfo
must be a valid pointer to a valid VkPipelineInfoKHR structure"
},
{
"vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter",
"text": " pExecutableCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter",
"text": " If the value referenced by pExecutableCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pExecutableCount
VkPipelineExecutablePropertiesKHR structures"
}
]
},
"VkPipelineExecutablePropertiesKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPipelinePropertiesEXT": {
"(VK_EXT_pipeline_properties)": [
{
"vuid": "VUID-vkGetPipelinePropertiesEXT-pipeline-06738",
"text": " The pipeline
member of pPipelineInfo
must have been created with device
"
},
{
"vuid": "VUID-vkGetPipelinePropertiesEXT-pPipelineProperties-06739",
"text": " pPipelineProperties
must be a valid pointer to a VkPipelinePropertiesIdentifierEXT structure"
},
{
"vuid": "VUID-vkGetPipelinePropertiesEXT-None-06766",
"text": " The pipelinePropertiesIdentifier
feature must be enabled"
},
{
"vuid": "VUID-vkGetPipelinePropertiesEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetPipelinePropertiesEXT-pPipelineInfo-parameter",
"text": " pPipelineInfo
must be a valid pointer to a valid VkPipelineInfoEXT structure"
}
]
},
"VkPipelinePropertiesIdentifierEXT": {
"(VK_EXT_pipeline_properties)": [
{
"vuid": "VUID-VkPipelinePropertiesIdentifierEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT
"
},
{
"vuid": "VUID-VkPipelinePropertiesIdentifierEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkPipelineInfoKHR": {
"(VK_KHR_pipeline_executable_properties,VK_EXT_pipeline_properties)": [
{
"vuid": "VUID-VkPipelineInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR
"
},
{
"vuid": "VUID-VkPipelineInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
}
]
},
"vkGetPipelineExecutableStatisticsKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272",
"text": " The pipelineExecutableInfo
feature must be enabled"
},
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273",
"text": " The pipeline
member of pExecutableInfo
must have been created with device
"
},
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274",
"text": " The pipeline
member of pExecutableInfo
must have been created with VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR
"
},
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter",
"text": " pExecutableInfo
must be a valid pointer to a valid VkPipelineExecutableInfoKHR structure"
},
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter",
"text": " pStatisticCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter",
"text": " If the value referenced by pStatisticCount
is not 0
, and pStatistics
is not NULL
, pStatistics
must be a valid pointer to an array of pStatisticCount
VkPipelineExecutableStatisticKHR structures"
}
]
},
"VkPipelineExecutableInfoKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275",
"text": " executableIndex
must be less than the number of pipeline executables associated with pipeline
as returned in the pExecutableCount
parameter of vkGetPipelineExecutablePropertiesKHR
"
},
{
"vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR
"
},
{
"vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
}
]
},
"VkPipelineExecutableStatisticKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR
"
},
{
"vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPipelineExecutableInternalRepresentationsKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276",
"text": " The pipelineExecutableInfo
feature must be enabled"
},
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277",
"text": " The pipeline
member of pExecutableInfo
must have been created with device
"
},
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278",
"text": " The pipeline
member of pExecutableInfo
must have been created with VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR
"
},
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter",
"text": " pExecutableInfo
must be a valid pointer to a valid VkPipelineExecutableInfoKHR structure"
},
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter",
"text": " pInternalRepresentationCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter",
"text": " If the value referenced by pInternalRepresentationCount
is not 0
, and pInternalRepresentations
is not NULL
, pInternalRepresentations
must be a valid pointer to an array of pInternalRepresentationCount
VkPipelineExecutableInternalRepresentationKHR structures"
}
]
},
"VkPipelineExecutableInternalRepresentationKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR
"
},
{
"vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"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
"
}
]
},
"VkPipelineCompilerControlCreateInfoAMD": {
"(VK_AMD_pipeline_compiler_control)": [
{
"vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD
"
},
{
"vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask",
"text": " compilerControlFlags
must be 0
"
}
]
},
"VkPipelineCreationFeedbackCreateInfo": {
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_feedback)": [
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineCreationFeedback-parameter",
"text": " pPipelineCreationFeedback
must be a valid pointer to a VkPipelineCreationFeedback structure"
},
{
"vuid": "VUID-VkPipelineCreationFeedbackCreateInfo-pPipelineStageCreationFeedbacks-parameter",
"text": " If pipelineStageCreationFeedbackCount
is not 0
, pPipelineStageCreationFeedbacks
must be a valid pointer to an array of pipelineStageCreationFeedbackCount
VkPipelineCreationFeedback structures"
}
]
},
"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
or a pointer to a valid instance of VkPhysicalDeviceMemoryBudgetPropertiesEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
"(VK_EXT_memory_budget)": [
{
"vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT
"
}
]
},
"vkAllocateMemory": {
"core": [
{
"vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
"text": " pAllocateInfo->allocationSize
must be less than or equal to VkPhysicalDeviceMemoryProperties::memoryHeaps
[memindex
].size
where memindex
= VkPhysicalDeviceMemoryProperties::memoryTypes
[pAllocateInfo->memoryTypeIndex
].heapIndex
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-maxMemoryAllocationCount-04101",
"text": " There must be less than VkPhysicalDeviceLimits
::maxMemoryAllocationCount
device memory allocations currently allocated on the device"
},
{
"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"
}
],
"(VK_AMD_device_coherent_memory)": [
{
"vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790",
"text": " If the deviceCoherentMemory
feature is not enabled, pAllocateInfo->memoryTypeIndex
must not identify a memory type supporting VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
"
}
]
},
"VkMemoryAllocateInfo": {
"core": [
{
"vuid": "VUID-VkMemoryAllocateInfo-None-06657",
"text": " The parameters must not define more than one import operation"
},
{
"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, VkExportMetalObjectCreateInfoEXT, VkImportAndroidHardwareBufferInfoANDROID, VkImportMemoryBufferCollectionFUCHSIA, VkImportMemoryFdInfoKHR, VkImportMemoryHostPointerInfoEXT, VkImportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV, VkImportMemoryZirconHandleInfoFUCHSIA, VkImportMetalBufferInfoEXT, VkMemoryAllocateFlagsInfo, VkMemoryDedicatedAllocateInfo, VkMemoryOpaqueCaptureAddressAllocateInfo, or VkMemoryPriorityAllocateInfoEXT"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT"
}
],
"!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
"text": " allocationSize
must be greater than 0
"
}
],
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-buffer-06380",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA, and VkMemoryDedicatedAllocateInfo::buffer
is present and non-NULL, VkImportMemoryBufferCollectionFUCHSIA::collection
and VkImportMemoryBufferCollectionFUCHSIA::index
must match VkBufferCollectionBufferCreateInfoFUCHSIA::collection
and VkBufferCollectionBufferCreateInfoFUCHSIA::index
, respectively, of the VkBufferCollectionBufferCreateInfoFUCHSIA structure used to create the VkMemoryDedicatedAllocateInfo::buffer
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-image-06381",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA, and VkMemoryDedicatedAllocateInfo::image
is present and non-NULL, VkImportMemoryBufferCollectionFUCHSIA::collection
and VkImportMemoryBufferCollectionFUCHSIA::index
must match VkBufferCollectionImageCreateInfoFUCHSIA::collection
and VkBufferCollectionImageCreateInfoFUCHSIA::index
, respectively, of the VkBufferCollectionImageCreateInfoFUCHSIA structure used to create the VkMemoryDedicatedAllocateInfo::image
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-06382",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA, allocationSize
must match VkMemoryRequirements::size
value retrieved by vkGetImageMemoryRequirements or vkGetBufferMemoryRequirements for image-based or buffer-based collections respectively"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-06383",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA, the pNext
chain must include a VkMemoryDedicatedAllocateInfo structure with either its image
or buffer
field set to a value other than VK_NULL_HANDLE."
},
{
"vuid": "VUID-VkMemoryAllocateInfo-image-06384",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA and VkMemoryDedicatedAllocateInfo::image
is not VK_NULL_HANDLE, the image
must be created with a VkBufferCollectionImageCreateInfoFUCHSIA structure chained to its VkImageCreateInfo::pNext
pointer"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-buffer-06385",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA and VkMemoryDedicatedAllocateInfo::buffer
is not VK_NULL_HANDLE, the buffer
must be created with a VkBufferCollectionBufferCreateInfoFUCHSIA structure chained to its VkBufferCreateInfo::pNext
pointer"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-06386",
"text": " If the parameters define an import operation from an VkBufferCollectionFUCHSIA, memoryTypeIndex
must be from VkBufferCollectionPropertiesFUCHSIA as retrieved by vkGetBufferCollectionPropertiesFUCHSIA."
}
],
"(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
"text": " If the pNext
chain includes a VkExportMemoryAllocateInfo
structure, 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 include a VkMemoryDedicatedAllocateInfo
or VkDedicatedAllocationMemoryAllocateInfoNV
structure with either its image
or buffer
member set to a value other than VK_NULL_HANDLE"
}
],
"(VK_KHR_external_memory)+(VK_NV_external_memory)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
"text": " If the pNext
chain includes a VkExportMemoryAllocateInfo structure, it must not include a VkExportMemoryAllocateInfoNV or VkExportMemoryWin32HandleInfoNV structure"
}
],
"(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
"text": " If the pNext
chain includes a VkImportMemoryWin32HandleInfoKHR structure, it must not include a VkImportMemoryWin32HandleInfoNV structure"
}
],
"(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
, then the values of allocationSize
and memoryTypeIndex
must match those specified when the payload 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 the mask specified when the payload 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 payload 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
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT
, then the values of allocationSize
and memoryTypeIndex
must match those specified when the payload being imported was created"
},
{
"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 payload was extracted"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
"text": " If the protectedMemory
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_EXT_external_memory_host)+(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02805",
"text": " If the parameters define an import operation and the external handle is a host pointer, the pNext
chain must not include a VkDedicatedAllocationMemoryAllocateInfoNV structure with either its image
or buffer
field set to a value other than VK_NULL_HANDLE"
}
],
"(VK_EXT_external_memory_host)+(VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02806",
"text": " If the parameters define an import operation and the external handle is a host pointer, the pNext
chain must not include a VkMemoryDedicatedAllocateInfo structure with either its image
or buffer
field set to a value other than VK_NULL_HANDLE"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, allocationSize
must be the size returned by vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, and the pNext
chain does not include a VkMemoryDedicatedAllocateInfo structure or VkMemoryDedicatedAllocateInfo::image
is VK_NULL_HANDLE, the Android hardware buffer must have a AHardwareBuffer_Desc
::format
of AHARDWAREBUFFER_FORMAT_BLOB
and a AHardwareBuffer_Desc
::usage
that includes AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, memoryTypeIndex
must be one of those returned by vkGetAndroidHardwareBufferPropertiesANDROID for the Android hardware buffer"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
"text": " If the parameters do not define an import operation, and the pNext
chain includes a VkExportMemoryAllocateInfo
structure with VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
included in its handleTypes
member, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo structure with image
not equal to VK_NULL_HANDLE, then allocationSize
must be 0
, otherwise allocationSize
must be greater than 0
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, the Android hardware buffer’s AHardwareBuffer
::usage
must include at least one of AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER
, AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE
or AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo with image
that is not VK_NULL_HANDLE, the format of image
must be VK_FORMAT_UNDEFINED
or the format returned by vkGetAndroidHardwareBufferPropertiesANDROID in VkAndroidHardwareBufferFormatPropertiesANDROID::format
for the Android hardware buffer"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo structure with image
that is not VK_NULL_HANDLE, the width, height, and array layer dimensions of image
and the Android hardware buffer’s AHardwareBuffer_Desc
must be identical"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo structure with image
that is not VK_NULL_HANDLE, and the Android hardware buffer’s AHardwareBuffer
::usage
includes AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE
, the image
must have a complete mipmap chain"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo structure with image
that is not VK_NULL_HANDLE, and the Android hardware buffer’s AHardwareBuffer
::usage
does not include AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE
, the image
must have exactly one mipmap level"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
"text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext
chain includes a VkMemoryDedicatedAllocateInfo structure with image
that is not VK_NULL_HANDLE, each bit set in the usage of image
must be listed in AHardwareBuffer Usage Equivalence, and if there is a corresponding AHARDWAREBUFFER_USAGE
bit listed that bit must be included in the Android hardware buffer’s AHardwareBuffer_Desc
::usage
"
}
],
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329",
"text": " If VkMemoryOpaqueCaptureAddressAllocateInfo::opaqueCaptureAddress
is not zero, VkMemoryAllocateFlagsInfo
::flags
must include VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-flags-03330",
"text": " If VkMemoryAllocateFlagsInfo
::flags
includes VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
, the bufferDeviceAddressCaptureReplay
feature must be enabled"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-flags-03331",
"text": " If VkMemoryAllocateFlagsInfo
::flags
includes VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
, the bufferDeviceAddress
feature must be enabled"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333",
"text": " If the parameters define an import operation, VkMemoryOpaqueCaptureAddressAllocateInfo::opaqueCaptureAddress
must be zero"
}
],
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)+(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-03332",
"text": " If the pNext
chain includes a VkImportMemoryHostPointerInfoEXT
structure, VkMemoryOpaqueCaptureAddressAllocateInfo::opaqueCaptureAddress
must be zero"
}
],
"(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-None-04749",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
, the value of memoryTypeIndex
must be an index identifying a memory type from the memoryTypeBits
field of the VkMemoryZirconHandlePropertiesFUCHSIA structure populated by a call to vkGetMemoryZirconHandlePropertiesFUCHSIA"
},
{
"vuid": "VUID-VkMemoryAllocateInfo-allocationSize-04750",
"text": " If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
, the value of allocationSize
must be greater than 0
and must be less than or equal to the size of the VMO as determined by zx_vmo_get_size
(handle
) where handle
is the VMO handle to the imported external memory"
}
],
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkMemoryAllocateInfo-pNext-06780",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT
."
}
]
},
"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-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-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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"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-buffer-01435",
"text": " If buffer
is not VK_NULL_HANDLE, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964",
"text": " If image
is not VK_NULL_HANDLE and the memory is not an imported Android Hardware Buffer, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the image"
},
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965",
"text": " If buffer
is not VK_NULL_HANDLE and the memory is not an imported Android Hardware Buffer, VkMemoryAllocateInfo
::allocationSize
must equal the VkMemoryRequirements
::size
of the buffer"
}
],
"(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
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-04751",
"text": " If image
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
, 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-04752",
"text": " If buffer
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
, the memory being imported must also be a dedicated buffer allocation and buffer
must be identical to the buffer associated with the imported memory"
}
]
},
"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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
"text": " If image
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation, the memory being imported must also be a dedicated image allocation and image
must be identical to the image associated with the imported memory"
},
{
"vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
"text": " If buffer
is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation, the memory being imported must also be a dedicated buffer allocation and buffer
must be identical to the buffer associated with the imported memory"
}
]
},
"VkMemoryPriorityAllocateInfoEXT": {
"(VK_EXT_memory_priority)": [
{
"vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
"text": " priority
must be between 0
and 1
, inclusive"
},
{
"vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT
"
}
]
},
"vkSetDeviceMemoryPriorityEXT": {
"(VK_EXT_pageable_device_local_memory)": [
{
"vuid": "VUID-vkSetDeviceMemoryPriorityEXT-priority-06258",
"text": " priority
must be between 0
and 1
, inclusive"
},
{
"vuid": "VUID-vkSetDeviceMemoryPriorityEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetDeviceMemoryPriorityEXT-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-vkSetDeviceMemoryPriorityEXT-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
]
},
"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"
}
]
},
"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"
}
]
},
"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
, a VkExportMemoryWin32HandleInfoKHR
structure must not be included in the pNext
chain of VkMemoryAllocateInfo"
},
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
"text": " If pAttributes
is not NULL
, pAttributes
must be a valid pointer to a valid SECURITY_ATTRIBUTES
value"
}
]
},
"VkImportMemoryWin32HandleInfoKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
"text": " If handleType
is not 0
, it must be supported for import, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
"text": " The memory from which handle
was exported, or the memory named by name
must have been created on the same underlying physical device as device
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
"text": " If handleType
is not 0
, it must be defined as an NT handle or a global share handle"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
"text": " If handleType
is not VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT
, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT
, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT
, name
must be NULL
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
"text": " If handleType
is not 0
and handle
is NULL
, name
must name a valid memory resource of the type specified by handleType
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
"text": " If handleType
is not 0
and name
is NULL
, handle
must be a valid handle of the type specified by handleType
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
"text": " if handle
is not NULL
, name
must be NULL
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
"text": " If handle
is not NULL
, it must obey any requirements listed for handleType
in external memory handle types compatibility"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
"text": " If name
is not NULL
, it must obey any requirements listed for handleType
in external memory handle types compatibility"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryWin32HandleKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
"text": " pGetWin32HandleInfo
must be a valid pointer to a valid VkMemoryGetWin32HandleInfoKHR structure"
},
{
"vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
"text": " pHandle
must be a valid pointer to a HANDLE
value"
}
]
},
"VkMemoryGetWin32HandleInfoKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
"text": " handleType
must have been included in VkExportMemoryAllocateInfo::handleTypes
when memory
was created"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
"text": " If handleType
is defined as an NT handle, vkGetMemoryWin32HandleKHR must be called no more than once for each valid unique combination of memory
and handleType
"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
"text": " handleType
must be defined as an NT handle or a global share handle"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR
"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryWin32HandlePropertiesKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
"text": " handle
must be an external memory handle created outside of the Vulkan API"
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
"text": " handleType
must not be one of the handle types defined as opaque"
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
"text": " pMemoryWin32HandleProperties
must be a valid pointer to a VkMemoryWin32HandlePropertiesKHR structure"
}
]
},
"VkMemoryWin32HandlePropertiesKHR": {
"(VK_KHR_external_memory_win32)": [
{
"vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"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
"
}
]
},
"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 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT
"
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
"text": " If handleType
is not 0
, fd
must be a valid handle of the type specified by handleType
"
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
"text": " The memory represented by fd
must have been created from a physical device and driver that is compatible with device
and handleType
, as described in External memory handle types compatibility"
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
"text": " fd
must obey any requirements listed for handleType
in external memory handle types compatibility"
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR
"
},
{
"vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryFdKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
"text": " pGetFdInfo
must be a valid pointer to a valid VkMemoryGetFdInfoKHR structure"
},
{
"vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
"text": " pFd
must be a valid pointer to an int
value"
}
]
},
"VkMemoryGetFdInfoKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
"text": " handleType
must have been included in VkExportMemoryAllocateInfo::handleTypes
when memory
was created"
},
{
"vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
"text": " handleType
must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT
"
},
{
"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
"
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
"text": " pMemoryFdProperties
must be a valid pointer to a VkMemoryFdPropertiesKHR structure"
}
]
},
"VkMemoryFdPropertiesKHR": {
"(VK_KHR_external_memory_fd)": [
{
"vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkImportMemoryHostPointerInfoEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
"text": " If handleType
is not 0
, it must be supported for import, as reported in VkExternalMemoryProperties"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
"text": " If handleType
is not 0
, it must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
"text": " pHostPointer
must be a pointer aligned to an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT
::minImportedHostPointerAlignment
"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
, pHostPointer
must be a pointer to allocationSize
number of bytes of host memory, where allocationSize
is the member of the VkMemoryAllocateInfo
structure this structure is chained to"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
, pHostPointer
must be a pointer to allocationSize
number of bytes of host mapped foreign memory, where allocationSize
is the member of the VkMemoryAllocateInfo
structure this structure is chained to"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT
"
},
{
"vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryHostPointerPropertiesEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
"text": " handleType
must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
or VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
"text": " pHostPointer
must be a pointer aligned to an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT
::minImportedHostPointerAlignment
"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT
, pHostPointer
must be a pointer to host memory"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
"text": " If handleType
is VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
, pHostPointer
must be a pointer to host mapped foreign memory"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
"text": " pMemoryHostPointerProperties
must be a valid pointer to a VkMemoryHostPointerPropertiesEXT structure"
}
]
},
"VkMemoryHostPointerPropertiesEXT": {
"(VK_EXT_external_memory_host)": [
{
"vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkImportAndroidHardwareBufferInfoANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
"text": " If buffer
is not NULL
, Android hardware buffers must be supported for import, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties"
},
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
"text": " If buffer
is not NULL
, it must be a valid Android hardware buffer object with AHardwareBuffer_Desc
::usage
compatible with Vulkan as described in Android Hardware Buffers"
},
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
"
},
{
"vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
"text": " buffer
must be a valid pointer to an AHardwareBuffer
value"
}
]
},
"vkGetMemoryAndroidHardwareBufferANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkMemoryGetAndroidHardwareBufferInfoANDROID structure"
},
{
"vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
"text": " pBuffer
must be a valid pointer to a valid pointer to an AHardwareBuffer
value"
}
]
},
"VkMemoryGetAndroidHardwareBufferInfoANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
"text": " VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
must have been included in VkExportMemoryAllocateInfo::handleTypes
when memory
was created"
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
"text": " If the pNext
chain of the VkMemoryAllocateInfo used to allocate memory
included a VkMemoryDedicatedAllocateInfo with non-NULL
image
member, then that image
must already be bound to memory
"
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID
"
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
}
]
},
"vkGetAndroidHardwareBufferPropertiesANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
"text": " buffer
must be a valid Android hardware buffer object with at least one of the AHARDWAREBUFFER_USAGE_GPU_*
flags in its AHardwareBuffer_Desc
::usage
"
},
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
"text": " buffer
must be a valid pointer to a valid AHardwareBuffer
value"
},
{
"vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkAndroidHardwareBufferPropertiesANDROID structure"
}
]
},
"VkAndroidHardwareBufferPropertiesANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID
"
},
{
"vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
"text": " 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 VkAndroidHardwareBufferFormatProperties2ANDROID or VkAndroidHardwareBufferFormatPropertiesANDROID"
},
{
"vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"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
"
}
]
},
"VkAndroidHardwareBufferFormatProperties2ANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-VkAndroidHardwareBufferFormatProperties2ANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID
"
}
]
},
"vkGetMemoryRemoteAddressNV": {
"(VK_NV_external_memory_rdma)": [
{
"vuid": "VUID-vkGetMemoryRemoteAddressNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryRemoteAddressNV-pMemoryGetRemoteAddressInfo-parameter",
"text": " pMemoryGetRemoteAddressInfo
must be a valid pointer to a valid VkMemoryGetRemoteAddressInfoNV structure"
},
{
"vuid": "VUID-vkGetMemoryRemoteAddressNV-pAddress-parameter",
"text": " pAddress
must be a valid pointer to a VkRemoteAddressNV
value"
}
]
},
"VkMemoryGetRemoteAddressInfoNV": {
"(VK_NV_external_memory_rdma)": [
{
"vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-handleType-04966",
"text": " handleType
must have been included in VkExportMemoryAllocateInfo::handleTypes
when memory
was created"
},
{
"vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV
"
},
{
"vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-VkMemoryGetRemoteAddressInfoNV-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"VkImportMemoryZirconHandleInfoFUCHSIA": {
"(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-04771",
"text": " handleType
must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
"
},
{
"vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handle-04772",
"text": " handle
must be a valid VMO handle"
},
{
"vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkImportMemoryZirconHandleInfoFUCHSIA-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"vkGetMemoryZirconHandlePropertiesFUCHSIA": {
"(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-04773",
"text": " handleType
must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
"
},
{
"vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-zirconHandle-04774",
"text": " zirconHandle
must reference a valid VMO"
},
{
"vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
},
{
"vuid": "VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-pMemoryZirconHandleProperties-parameter",
"text": " pMemoryZirconHandleProperties
must be a valid pointer to a VkMemoryZirconHandlePropertiesFUCHSIA structure"
}
]
},
"VkMemoryZirconHandlePropertiesFUCHSIA": {
"(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-VkMemoryZirconHandlePropertiesFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA
"
},
{
"vuid": "VUID-VkMemoryZirconHandlePropertiesFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetMemoryZirconHandleFUCHSIA": {
"(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMemoryZirconHandleFUCHSIA-pGetZirconHandleInfo-parameter",
"text": " pGetZirconHandleInfo
must be a valid pointer to a valid VkMemoryGetZirconHandleInfoFUCHSIA structure"
},
{
"vuid": "VUID-vkGetMemoryZirconHandleFUCHSIA-pZirconHandle-parameter",
"text": " pZirconHandle
must be a valid pointer to a zx_handle_t
value"
}
]
},
"VkMemoryGetZirconHandleInfoFUCHSIA": {
"(VK_FUCHSIA_external_memory)": [
{
"vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04775",
"text": " handleType
must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA
"
},
{
"vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-04776",
"text": " handleType
must have been included in the handleTypes
field of the VkExportMemoryAllocateInfo
structure when the external memory was allocated"
},
{
"vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-VkMemoryGetZirconHandleInfoFUCHSIA-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"VkExportMetalObjectCreateInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalObjectCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalObjectCreateInfoEXT-exportObjectType-parameter",
"text": " If exportObjectType
is not 0
, exportObjectType
must be a valid VkExportMetalObjectTypeFlagBitsEXT value"
}
]
},
"vkExportMetalObjectsEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-vkExportMetalObjectsEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkExportMetalObjectsEXT-pMetalObjectsInfo-parameter",
"text": " pMetalObjectsInfo
must be a valid pointer to a VkExportMetalObjectsInfoEXT structure"
}
]
},
"VkExportMetalObjectsInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06791",
"text": " If the pNext
chain includes a VkExportMetalDeviceInfoEXT structure, the VkInstance must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkInstanceCreateInfo structure in the vkCreateInstance command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06792",
"text": " If the pNext
chain includes a VkExportMetalCommandQueueInfoEXT structure, the VkInstance must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkInstanceCreateInfo structure in the vkCreateInstance command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06793",
"text": " If the pNext
chain includes a VkExportMetalBufferInfoEXT structure, the VkDeviceMemory in its memory
member must have been allocated with VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkMemoryAllocateInfo structure in the vkAllocateMemory command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06794",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, exactly one of its image
, imageView
, or bufferView
members must not be VK_NULL_HANDLE."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06795",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and its image
member is not VK_NULL_HANDLE
, the VkImage in its image
member must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkImageCreateInfo structure in the vkCreateImage command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06796",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and its imageView
member is not VK_NULL_HANDLE
, the VkImageView in its imageView
member must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkImageViewCreateInfo structure in the vkCreateImageView command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06797",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and its bufferView
member is not VK_NULL_HANDLE
, the VkBufferView in its bufferView
member must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkBufferViewCreateInfo structure in the vkCreateBufferView command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06798",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and if either its image
or imageView
member is not VK_NULL_HANDLE, then plane
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06799",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImage in its image
member does not have a multi-planar format, then its plane
member must be VK_IMAGE_ASPECT_PLANE_0_BIT
."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06800",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImage in its image
member has a multi-planar format with only two planes, then its plane
member must not be VK_IMAGE_ASPECT_PLANE_2_BIT
"
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06801",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImageView in its imageView
member does not have a multi-planar format, then its plane
member must be VK_IMAGE_ASPECT_PLANE_0_BIT
."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06802",
"text": " If the pNext
chain includes a VkExportMetalTextureInfoEXT structure, and if the VkImageView in its imageView
member has a multi-planar format with only two planes, then its plane
member must not be VK_IMAGE_ASPECT_PLANE_2_BIT
"
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06803",
"text": " If the pNext
chain includes a VkExportMetalIOSurfaceInfoEXT structure, the VkImage in its image
member must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkImageCreateInfo structure in the vkCreateImage command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06804",
"text": " If the pNext
chain includes a VkExportMetalSharedEventInfoEXT structure, exactly one of its semaphore
or event
members must not be VK_NULL_HANDLE."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06805",
"text": " If the pNext
chain includes a VkExportMetalSharedEventInfoEXT structure, and its semaphore
member is not VK_NULL_HANDLE
, the VkSemaphore in its semaphore
member must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkSemaphoreCreateInfo structure in the vkCreateSemaphore command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-pNext-06806",
"text": " If the pNext
chain includes a VkExportMetalSharedEventInfoEXT structure, and its event
member is not VK_NULL_HANDLE
, the VkEvent in its event
member must have been created with VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT
in the exportObjectType
member of a VkExportMetalObjectCreateInfoEXT structure in the pNext
chain of the VkEventCreateInfo structure in the vkCreateEvent command."
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-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 VkExportMetalBufferInfoEXT, VkExportMetalCommandQueueInfoEXT, VkExportMetalDeviceInfoEXT, VkExportMetalIOSurfaceInfoEXT, VkExportMetalSharedEventInfoEXT, or VkExportMetalTextureInfoEXT"
},
{
"vuid": "VUID-VkExportMetalObjectsInfoEXT-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalBufferInfoEXT, VkExportMetalCommandQueueInfoEXT, VkExportMetalIOSurfaceInfoEXT, VkExportMetalSharedEventInfoEXT, or VkExportMetalTextureInfoEXT"
}
]
},
"VkExportMetalDeviceInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalDeviceInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT
"
}
]
},
"VkExportMetalCommandQueueInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalCommandQueueInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalCommandQueueInfoEXT-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
}
]
},
"VkExportMetalBufferInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalBufferInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalBufferInfoEXT-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
}
]
},
"VkImportMetalBufferInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkImportMetalBufferInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT
"
}
]
},
"VkExportMetalTextureInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalTextureInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalTextureInfoEXT-image-parameter",
"text": " If image
is not VK_NULL_HANDLE, image
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkExportMetalTextureInfoEXT-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-VkExportMetalTextureInfoEXT-bufferView-parameter",
"text": " If bufferView
is not VK_NULL_HANDLE, bufferView
must be a valid VkBufferView handle"
},
{
"vuid": "VUID-VkExportMetalTextureInfoEXT-plane-parameter",
"text": " plane
must be a valid VkImageAspectFlagBits value"
},
{
"vuid": "VUID-VkExportMetalTextureInfoEXT-commonparent",
"text": " Each of bufferView
, image
, and imageView
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkImportMetalTextureInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkImportMetalTextureInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT
"
},
{
"vuid": "VUID-VkImportMetalTextureInfoEXT-plane-parameter",
"text": " plane
must be a valid VkImageAspectFlagBits value"
}
]
},
"VkExportMetalIOSurfaceInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalIOSurfaceInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalIOSurfaceInfoEXT-image-parameter",
"text": " image
must be a valid VkImage handle"
}
]
},
"VkImportMetalIOSurfaceInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkImportMetalIOSurfaceInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT
"
}
]
},
"VkExportMetalSharedEventInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkExportMetalSharedEventInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT
"
},
{
"vuid": "VUID-VkExportMetalSharedEventInfoEXT-semaphore-parameter",
"text": " If semaphore
is not VK_NULL_HANDLE, semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkExportMetalSharedEventInfoEXT-event-parameter",
"text": " If event
is not VK_NULL_HANDLE, event
must be a valid VkEvent handle"
},
{
"vuid": "VUID-VkExportMetalSharedEventInfoEXT-commonparent",
"text": " Both of event
, and semaphore
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkImportMetalSharedEventInfoEXT": {
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkImportMetalSharedEventInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT
"
}
]
},
"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"
}
]
},
"VkMemoryOpaqueCaptureAddressAllocateInfo": {
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO
"
}
]
},
"vkFreeMemory": {
"core": [
{
"vuid": "VUID-vkFreeMemory-memory-00677",
"text": " All submitted commands that refer to memory
(via images or buffers) must have completed execution"
},
{
"vuid": "VUID-vkFreeMemory-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkFreeMemory-memory-parameter",
"text": " If memory
is not VK_NULL_HANDLE, memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-vkFreeMemory-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkFreeMemory-memory-parent",
"text": " If memory
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkMapMemory": {
"core": [
{
"vuid": "VUID-vkMapMemory-memory-00678",
"text": " memory
must not be currently host mapped"
},
{
"vuid": "VUID-vkMapMemory-offset-00679",
"text": " offset
must be less than the size of memory
"
},
{
"vuid": "VUID-vkMapMemory-size-00680",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be greater than 0
"
},
{
"vuid": "VUID-vkMapMemory-size-00681",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be less than or equal to the size of the memory
minus offset
"
},
{
"vuid": "VUID-vkMapMemory-memory-00682",
"text": " memory
must have been created with a memory type that reports VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
"
},
{
"vuid": "VUID-vkMapMemory-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkMapMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-vkMapMemory-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-vkMapMemory-ppData-parameter",
"text": " ppData
must be a valid pointer to a pointer value"
},
{
"vuid": "VUID-vkMapMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
],
"(VK_KHR_device_group)": [
{
"vuid": "VUID-vkMapMemory-memory-00683",
"text": " memory
must not have been allocated with multiple instances"
}
]
},
"vkFlushMappedMemoryRanges": {
"core": [
{
"vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
"text": " pMemoryRanges
must be a valid pointer to an array of memoryRangeCount
valid VkMappedMemoryRange structures"
},
{
"vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
"text": " memoryRangeCount
must be greater than 0
"
}
]
},
"vkInvalidateMappedMemoryRanges": {
"core": [
{
"vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
"text": " pMemoryRanges
must be a valid pointer to an array of memoryRangeCount
valid VkMappedMemoryRange structures"
},
{
"vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
"text": " memoryRangeCount
must be greater than 0
"
}
]
},
"VkMappedMemoryRange": {
"core": [
{
"vuid": "VUID-VkMappedMemoryRange-memory-00684",
"text": " memory
must be currently host mapped"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-00685",
"text": " If size
is not equal to VK_WHOLE_SIZE
, offset
and size
must specify a range contained within the currently mapped range of memory
"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-00686",
"text": " If size
is equal to VK_WHOLE_SIZE
, offset
must be within the currently mapped range of memory
"
},
{
"vuid": "VUID-VkMappedMemoryRange-offset-00687",
"text": " offset
must be a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize
"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-01389",
"text": " If size
is equal to VK_WHOLE_SIZE
, the end of the current mapping of memory
must either be a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize
bytes from the beginning of the memory object, or be equal to the end of the memory object"
},
{
"vuid": "VUID-VkMappedMemoryRange-size-01390",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must either be a multiple of VkPhysicalDeviceLimits::nonCoherentAtomSize
, or offset
plus size
must equal the size of memory
"
},
{
"vuid": "VUID-VkMappedMemoryRange-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
"
},
{
"vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMappedMemoryRange-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
}
]
},
"vkUnmapMemory": {
"core": [
{
"vuid": "VUID-vkUnmapMemory-memory-00689",
"text": " memory
must be currently host mapped"
},
{
"vuid": "VUID-vkUnmapMemory-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkUnmapMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-vkUnmapMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetDeviceMemoryCommitment": {
"core": [
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
"text": " memory
must have been created with a memory type that reports VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
"text": " pCommittedMemoryInBytes
must be a valid pointer to a VkDeviceSize
value"
},
{
"vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetDeviceGroupPeerMemoryFeatures": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
"text": " heapIndex
must be less than memoryHeapCount
"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
"text": " localDeviceIndex
must be a valid device index"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
"text": " remoteDeviceIndex
must be a valid device index"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
"text": " localDeviceIndex
must not equal remoteDeviceIndex
"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
"text": " pPeerMemoryFeatures
must be a valid pointer to a VkPeerMemoryFeatureFlags value"
}
]
},
"vkGetDeviceMemoryOpaqueCaptureAddress": {
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334",
"text": " The bufferDeviceAddress
feature must be enabled"
},
{
"vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
feature must be enabled"
},
{
"vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkDeviceMemoryOpaqueCaptureAddressInfo structure"
}
]
},
"VkDeviceMemoryOpaqueCaptureAddressInfo": {
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336",
"text": " memory
must have been allocated with VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
"
},
{
"vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO
"
},
{
"vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
}
]
},
"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"
}
],
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkCreateBuffer-pNext-06387",
"text": " If using the VkBuffer for an import operation from a VkBufferCollectionFUCHSIA where a VkBufferCollectionBufferCreateInfoFUCHSIA has been chained to pNext
, pCreateInfo
must match the VkBufferConstraintsInfoFUCHSIA::createInfo
used when setting the constraints on the buffer collection with vkSetBufferCollectionBufferConstraintsFUCHSIA"
}
]
},
"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 sparseBinding
feature is not enabled, flags
must not contain VK_BUFFER_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00916",
"text": " If the sparseResidencyBuffer
feature is not enabled, flags
must not contain VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-00917",
"text": " If the sparseResidencyAliased
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 VkBufferCollectionBufferCreateInfoFUCHSIA, VkBufferDeviceAddressCreateInfoEXT, VkBufferOpaqueCaptureAddressCreateInfo, VkDedicatedAllocationBufferCreateInfoNV, VkExternalMemoryBufferCreateInfo, or VkVideoProfileListInfoKHR"
},
{
"vuid": "VUID-VkBufferCreateInfo-sType-unique",
"text": " The sType
value of each struct 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 includes a VkExternalMemoryBufferCreateInfo structure, 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 protectedMemory
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 includes a VkDedicatedAllocationBufferCreateInfoNV structure, and the dedicatedAllocation
member of the chained structure is VK_TRUE
, then flags
must not include VK_BUFFER_CREATE_SPARSE_BINDING_BIT
, VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
, or VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
"
}
],
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
"text": " If VkBufferDeviceAddressCreateInfoEXT::deviceAddress
is not zero, flags
must include VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
"
},
{
"vuid": "VUID-VkBufferCreateInfo-flags-03338",
"text": " If flags
includes VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
, the bufferDeviceAddressCaptureReplay
or bufferDeviceAddressCaptureReplayEXT
feature must be enabled"
}
],
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337",
"text": " If VkBufferOpaqueCaptureAddressCreateInfo::opaqueCaptureAddress
is not zero, flags
must include VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
"
}
],
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+!(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkBufferCreateInfo-flags-06549",
"text": " If flags
includes VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
, the bufferDeviceAddressCaptureReplay
feature must be enabled"
}
],
"(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkBufferCreateInfo-usage-04813",
"text": " If usage
includes VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR
, VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR
, then the pNext
chain must include a valid VkVideoProfileListInfoKHR structure with profileCount
greater than 0
and pProfiles
including at least one VkVideoProfileInfoKHR::videoCodecOperation
specifying a decode operation"
}
],
"(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkBufferCreateInfo-usage-04814",
"text": " If usage
includes VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
, VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR
, then the pNext
chain must include a valid VkVideoProfileListInfoKHR structure with profileCount
greater than 0
and pProfiles
including at least one VkVideoProfileInfoKHR::videoCodecOperation
specifying an encode operation"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-VkBufferCreateInfo-size-06409",
"text": " size
must be less than or equal to VkPhysicalDeviceMaintenance4Properties::maxBufferSize
"
}
]
},
"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"
}
]
},
"VkBufferOpaqueCaptureAddressCreateInfo": {
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO
"
}
]
},
"VkBufferDeviceAddressCreateInfoEXT": {
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT
"
}
]
},
"VkBufferCollectionBufferCreateInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBufferCollectionBufferCreateInfoFUCHSIA-index-06388",
"text": " index
must be less than VkBufferCollectionPropertiesFUCHSIA::bufferCount
"
},
{
"vuid": "VUID-VkBufferCollectionBufferCreateInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkBufferCollectionBufferCreateInfoFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
}
]
},
"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-range-00928",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
must be greater than 0
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-range-00929",
"text": " If range
is not equal to VK_WHOLE_SIZE
, range
must be an integer multiple of the texel block size of format
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-range-00930",
"text": " If range
is not equal to VK_WHOLE_SIZE
, the number of texel buffer elements given by ({lfloor}range
/ (texel block size){rfloor} {times} (texels per block)) where texel block size and texels per block are as defined in the Compatible Formats table for 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-range-04059",
"text": " If range
is equal to VK_WHOLE_SIZE
, the number of texel buffer elements given by ({lfloor}(size - offset
) / (texel block size){rfloor} {times} (texels per block)) where size is the size of buffer
, and texel block size and texels per block are as defined in the Compatible Formats table for format
, must be less than or equal to VkPhysicalDeviceLimits
::maxTexelBufferElements
"
},
{
"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
or a pointer to a valid instance of VkExportMetalObjectCreateInfoEXT"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
}
],
"!(VK_VERSION_1_3,VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
"text": " offset
must be a multiple of VkPhysicalDeviceLimits
::minTexelBufferOffsetAlignment
"
}
],
"(VK_VERSION_1_3,VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkBufferViewCreateInfo-offset-02749",
"text": " If the texelBufferAlignment
feature is not enabled, offset
must be a multiple of VkPhysicalDeviceLimits
::minTexelBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-02750",
"text": " If the texelBufferAlignment
feature is enabled and if buffer
was created with usage
containing VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
, offset
must be a multiple of the lesser of VkPhysicalDeviceTexelBufferAlignmentProperties::storageTexelBufferOffsetAlignmentBytes
or, if VkPhysicalDeviceTexelBufferAlignmentProperties::storageTexelBufferOffsetSingleTexelAlignment
is VK_TRUE
, the size of a texel of the requested format
. If the size of a texel is a multiple of three bytes, then the size of a single component of format
is used instead"
},
{
"vuid": "VUID-VkBufferViewCreateInfo-buffer-02751",
"text": " If the texelBufferAlignment
feature is enabled and if buffer
was created with usage
containing VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
, offset
must be a multiple of the lesser of VkPhysicalDeviceTexelBufferAlignmentProperties::uniformTexelBufferOffsetAlignmentBytes
or, if VkPhysicalDeviceTexelBufferAlignmentProperties::uniformTexelBufferOffsetSingleTexelAlignment
is VK_TRUE
, the size of a texel of the requested format
. If the size of a texel is a multiple of three bytes, then the size of a single component of format
is used instead"
}
],
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkBufferViewCreateInfo-pNext-06782",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
."
}
]
},
"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"
}
],
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkCreateImage-pNext-06389",
"text": " If a VkBufferCollectionImageCreateInfoFUCHSIA has been chained to pNext
, pCreateInfo
must match the Sysmem chosen VkImageCreateInfo
excepting members VkImageCreateInfo::extent
and VkImageCreateInfo::usage
in the match criteria"
}
]
},
"VkImageCreateInfo": {
"core": [
{
"vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
"text": " Each of the following values (as described in Image Creation Limits) must not be undefined : imageCreateMaxMipLevels
, imageCreateMaxArrayLayers
, imageCreateMaxExtent
, and imageCreateSampleCounts
"
},
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, queueFamilyIndexCount
must be greater than 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00944",
"text": " extent.width
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00945",
"text": " extent.height
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-00946",
"text": " extent.depth
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
"text": " mipLevels
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
"text": " arrayLayers
must be greater than 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-00949",
"text": " If flags
contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-02252",
"text": " extent.width
must be less than or equal to imageCreateMaxExtent.width
(as defined in Image Creation Limits)"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-02253",
"text": " extent.height
must be less than or equal to imageCreateMaxExtent.height
(as defined in Image Creation Limits)"
},
{
"vuid": "VUID-VkImageCreateInfo-extent-02254",
"text": " extent.depth
must be less than or equal to imageCreateMaxExtent.depth
(as defined in Image Creation Limits)"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00954",
"text": " If imageType
is VK_IMAGE_TYPE_2D
and flags
contains VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, extent.width
and extent.height
must be equal and arrayLayers
must be greater than or equal to 6"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00956",
"text": " If imageType
is VK_IMAGE_TYPE_1D
, both extent.height
and extent.depth
must be 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00957",
"text": " If imageType
is VK_IMAGE_TYPE_2D
, extent.depth
must be 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
"text": " mipLevels
must be less than or equal to the number of levels in the complete mipmap chain based on extent.width
, extent.height
, and extent.depth
"
},
{
"vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
"text": " mipLevels
must be less than or equal to imageCreateMaxMipLevels
(as defined in Image Creation Limits)"
},
{
"vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
"text": " arrayLayers
must be less than or equal to imageCreateMaxArrayLayers
(as defined in Image Creation Limits)"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-00961",
"text": " If imageType
is VK_IMAGE_TYPE_3D
, arrayLayers
must be 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02257",
"text": " If samples
is not VK_SAMPLE_COUNT_1_BIT
, then imageType
must be VK_IMAGE_TYPE_2D
, flags
must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
, mipLevels
must be equal to 1
, and imageCreateMaybeLinear
(as defined in Image Creation Limits) must be VK_FALSE
,"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00963",
"text": " If usage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, then bits other than VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, and VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
must not be set"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00964",
"text": " If usage
includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.width
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferWidth
"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00965",
"text": " If usage
includes VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.height
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferHeight
"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00966",
"text": " If usage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, usage
must also contain at least one of VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02258",
"text": " samples
must be a bit value that is set in imageCreateSampleCounts
(as defined in Image Creation Limits)"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-00968",
"text": " If the shaderStorageImageMultisample
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 sparseBinding
feature is not enabled, flags
must not contain VK_IMAGE_CREATE_SPARSE_BINDING_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-01924",
"text": " If the sparseResidencyAliased
feature is not enabled, flags
must not contain VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-04121",
"text": " If tiling
is VK_IMAGE_TILING_LINEAR
, flags
must not contain VK_IMAGE_CREATE_SPARSE_RESIDENCY_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 sparseResidencyImage2D
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 sparseResidencyImage3D
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 sparseResidency2Samples
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 sparseResidency4Samples
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 sparseResidency8Samples
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 sparseResidency16Samples
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 VkBufferCollectionImageCreateInfoFUCHSIA, VkDedicatedAllocationImageCreateInfoNV, VkExportMetalObjectCreateInfoEXT, VkExternalFormatANDROID, VkExternalMemoryImageCreateInfo, VkExternalMemoryImageCreateInfoNV, VkImageCompressionControlEXT, VkImageDrmFormatModifierExplicitCreateInfoEXT, VkImageDrmFormatModifierListCreateInfoEXT, VkImageFormatListCreateInfo, VkImageStencilUsageCreateInfo, VkImageSwapchainCreateInfoKHR, VkImportMetalIOSurfaceInfoEXT, VkImportMetalTextureInfoEXT, VkOpticalFlowImageFormatInfoNV, or VkVideoProfileListInfoKHR"
},
{
"vuid": "VUID-VkImageCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT or VkImportMetalTextureInfoEXT"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-VkImageCreateInfo-imageType-parameter",
"text": " imageType
must be a valid VkImageType value"
},
{
"vuid": "VUID-VkImageCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
"text": " sharingMode
must be a valid VkSharingMode value"
},
{
"vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
"text": " initialLayout
must be a valid VkImageLayout value"
}
],
"!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties for the physicalDevice
that was used to create device
"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
"
}
],
"!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageCreateInfo-format-00943",
"text": " format
must not be VK_FORMAT_UNDEFINED
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-01974",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure, and its externalFormat
member is non-zero the format
must be VK_FORMAT_UNDEFINED
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-01975",
"text": " If the pNext
chain does not include a VkExternalFormatANDROID structure, or does and its externalFormat
member is 0
, the format
must not be VK_FORMAT_UNDEFINED
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02393",
"text": " If the pNext
chain includes a VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02394",
"text": " If the pNext
chain includes a VkExternalMemoryImageCreateInfo structure whose handleTypes
member includes VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
, mipLevels
must either be 1
or equal to the number of levels in the complete mipmap chain based on extent.width
, extent.height
, and extent.depth
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02396",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
, flags
must not include VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02397",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
, usage
must not include any usages except VK_IMAGE_USAGE_SAMPLED_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02398",
"text": " If the pNext
chain includes a VkExternalFormatANDROID structure whose externalFormat
member is not 0
, tiling
must be VK_IMAGE_TILING_OPTIMAL
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-02557",
"text": " If flags
contains VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02558",
"text": " If samples
is not VK_SAMPLE_COUNT_1_BIT
, usage
must not contain VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02565",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, tiling
must be VK_IMAGE_TILING_OPTIMAL
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02566",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02567",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, flags
must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02568",
"text": " If flags
contains VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
, mipLevels
must be 1
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-00950",
"text": " If flags
contains VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
, imageType
must be VK_IMAGE_TYPE_3D
"
}
],
"(VK_EXT_fragment_density_map)+!(VK_QCOM_fragment_density_map_offset)": [
{
"vuid": "VUID-VkImageCreateInfo-usage-02559",
"text": " If usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, extent.width
must be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkImageCreateInfo-usage-02560",
"text": " If usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, extent.height
must be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
}
],
"(VK_EXT_fragment_density_map)+(VK_QCOM_fragment_density_map_offset)": [
{
"vuid": "VUID-VkImageCreateInfo-fragmentDensityMapOffset-06514",
"text": " If the fragmentDensityMapOffset
feature is not enabled and usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, extent.width
must be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\right\\rceil\\)"
},
{
"vuid": "VUID-VkImageCreateInfo-fragmentDensityMapOffset-06515",
"text": " If the fragmentDensityMapOffset
feature is not enabled and usage
includes VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, extent.height
must be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\)"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-01890",
"text": " If the protectedMemory
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 includes a VkExternalMemoryImageCreateInfoNV structure, it must not contain a VkExternalMemoryImageCreateInfo structure"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-00990",
"text": " If the pNext
chain includes a VkExternalMemoryImageCreateInfo structure, 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 a VkPhysicalDeviceExternalImageFormatInfo structure included 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 includes a VkExternalMemoryImageCreateInfoNV structure, its handleTypes
member must only contain bits that are also in VkExternalImageFormatPropertiesNV::externalMemoryProperties.compatibleHandleTypes
, as returned by vkGetPhysicalDeviceExternalImageFormatPropertiesNV with format
, imageType
, tiling
, usage
, and flags
equal to those in this structure, and with externalHandleType
equal to any one of the handle types specified in VkExternalMemoryImageCreateInfoNV::handleTypes
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
"text": " If the logical device was created with VkDeviceGroupDeviceCreateInfo::physicalDeviceCount
equal to 1, flags
must not contain VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02259",
"text": " If flags
contains VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT
, then mipLevels
must be one, arrayLayers
must be one, imageType
must be VK_IMAGE_TYPE_2D
. and imageCreateMaybeLinear
(as defined in Image Creation Limits) must be VK_FALSE
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-01572",
"text": " If flags
contains VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
, then format
must be a 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 VkExternalMemoryImageCreateInfo or VkExternalMemoryImageCreateInfoNV
structure whose handleTypes
member is not 0
, initialLayout
must be VK_IMAGE_LAYOUT_UNDEFINED
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCreateInfo-format-06410",
"text": " If the image format
is one of the formats that require a sampler {YCbCr} conversion, mipLevels
must be 1"
},
{
"vuid": "VUID-VkImageCreateInfo-format-06411",
"text": " If the image format
is one of the formats that require a sampler {YCbCr} conversion, samples
must be VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-06412",
"text": " If the image format
is one of the formats that require a sampler {YCbCr} conversion, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
"text": " If format
is a multi-planar format, and if imageCreateFormatFeatures
(as defined in Image Creation Limits) does not contain VK_FORMAT_FEATURE_DISJOINT_BIT
, then flags
must not contain VK_IMAGE_CREATE_DISJOINT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-01577",
"text": " If format
is not a multi-planar format, and flags
does not include VK_IMAGE_CREATE_ALIAS_BIT
, flags
must not contain VK_IMAGE_CREATE_DISJOINT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-04712",
"text": " If format
has a _422
or _420
suffix, width
must be a multiple of 2"
},
{
"vuid": "VUID-VkImageCreateInfo-format-04713",
"text": " If format
has a _420
suffix, height
must be a multiple of 2"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageCreateInfo-tiling-02261",
"text": " If tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then the pNext
chain must include exactly one of VkImageDrmFormatModifierListCreateInfoEXT or VkImageDrmFormatModifierExplicitCreateInfoEXT structures"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-02262",
"text": " If the pNext
chain includes a VkImageDrmFormatModifierListCreateInfoEXT or VkImageDrmFormatModifierExplicitCreateInfoEXT structure, then tiling
must be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
"
},
{
"vuid": "VUID-VkImageCreateInfo-tiling-02353",
"text": " If tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
and flags
contains VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, then the pNext
chain must include a VkImageFormatListCreateInfo structure with non-zero viewFormatCount
"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-01533",
"text": " If flags
contains VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
format
must be a depth or depth/stencil format"
}
],
"(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageCreateInfo-format-02795",
"text": " If format
is a depth-stencil format, usage
includes VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, and the pNext
chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage
member must also include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02796",
"text": " If format
is a depth-stencil format, usage
does not include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, and the pNext
chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage
member must also not include VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02797",
"text": " If format
is a depth-stencil format, usage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, and the pNext
chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage
member must also include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02798",
"text": " If format
is a depth-stencil format, usage
does not include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, and the pNext
chain includes a VkImageStencilUsageCreateInfo structure, then its VkImageStencilUsageCreateInfo::stencilUsage
member must also not include VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-Format-02536",
"text": " If Format
is a depth-stencil format and the pNext
chain includes a VkImageStencilUsageCreateInfo structure with its stencilUsage
member including VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.width
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferWidth
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02537",
"text": " If format
is a depth-stencil format and the pNext
chain includes a VkImageStencilUsageCreateInfo structure with its stencilUsage
member including VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, extent.height
must be less than or equal to VkPhysicalDeviceLimits
::maxFramebufferHeight
"
},
{
"vuid": "VUID-VkImageCreateInfo-format-02538",
"text": " If the shaderStorageImageMultisample
feature is not enabled, format
is a depth-stencil format and the pNext
chain includes a VkImageStencilUsageCreateInfo structure with its stencilUsage
including VK_IMAGE_USAGE_STORAGE_BIT
, samples
must be VK_SAMPLE_COUNT_1_BIT
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-VkImageCreateInfo-flags-02050",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
, imageType
must be VK_IMAGE_TYPE_2D
or VK_IMAGE_TYPE_3D
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02051",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
, it must not contain VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT
and the format
must not be a depth/stencil format"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02052",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
and imageType
is VK_IMAGE_TYPE_2D
, extent.width
and extent.height
must be greater than 1
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-02053",
"text": " If flags
contains VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
and imageType
is VK_IMAGE_TYPE_3D
, extent.width
, extent.height
, and extent.depth
must be greater than 1
"
}
],
"(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageCreateInfo-imageType-02082",
"text": " If usage
includes VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
, imageType
must be VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageCreateInfo-samples-02083",
"text": " If usage
includes VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
, samples
must be VK_SAMPLE_COUNT_1_BIT
"
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageCreateInfo-tiling-02084",
"text": " If usage
includes VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, tiling
must be VK_IMAGE_TILING_OPTIMAL
"
}
],
"(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkImageCreateInfo-usage-04992",
"text": " If usage
includes VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
, tiling
must be VK_IMAGE_TILING_LINEAR
"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkImageCreateInfo-imageView2DOn3DImage-04459",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageView2DOn3DImage
is VK_FALSE
, flags
must not contain VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
"
},
{
"vuid": "VUID-VkImageCreateInfo-multisampleArrayImage-04460",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::multisampleArrayImage
is VK_FALSE
, and samples
is not VK_SAMPLE_COUNT_1_BIT
, then arrayLayers
must be 1
"
}
],
"(VK_VERSION_1_2,VK_KHR_image_format_list)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06722",
"text": " If a VkImageFormatListCreateInfo structure was included in the pNext
chain and VkImageFormatListCreateInfo::viewFormatCount
is not zero, then each format in VkImageFormatListCreateInfo::pViewFormats
must either be compatible with the format
as described in the compatibility table or, if flags
contains VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
, be an uncompressed format that is size-compatible with format
"
},
{
"vuid": "VUID-VkImageCreateInfo-flags-04738",
"text": " If flags
does not contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
and the pNext
chain includes a VkImageFormatListCreateInfo structure, then VkImageFormatListCreateInfo::viewFormatCount
must be 0
or 1
"
}
],
"(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkImageCreateInfo-usage-04815",
"text": " If usage
includes VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
, then the pNext
chain must include a valid VkVideoProfileListInfoKHR structure with profileCount
greater than 0
and pProfiles
including at least one VkVideoProfileInfoKHR::videoCodecOperation
specifying a decode operation"
}
],
"(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkImageCreateInfo-usage-04816",
"text": " If usage
includes VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
, then the pNext
chain must include a valid VkVideoProfileListInfoKHR structure with profileCount
greater than 0
and pProfiles
including at least one VkVideoProfileInfoKHR::videoCodecOperation
specifying an encode operation"
}
],
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06811",
"text": " If the pNext
chain includes a VkVideoProfileListInfoKHR structure then supportedVideoFormat
must be VK_TRUE
"
}
],
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06390",
"text": " If the VkImage is to be used to import memory from a VkBufferCollectionFUCHSIA, a VkBufferCollectionImageCreateInfoFUCHSIA structure must be chained to pNext
."
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkImageCreateInfo-multisampledRenderToSingleSampled-06882",
"text": " If the multisampledRenderToSingleSampled
feature is not enabled, flags
must not contain VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
."
},
{
"vuid": "VUID-VkImageCreateInfo-flags-06883",
"text": " If flags
contains VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT
, samples
must be VK_SAMPLE_COUNT_1_BIT
."
}
],
"(VK_EXT_image_compression_control)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06743",
"text": " If the pNext
chain includes a VkImageCompressionControlEXT structure, format
is a multi-planar format, and VkImageCompressionControlEXT::flags
includes VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
, then VkImageCompressionControlEXT::compressionControlPlaneCount
must be equal to the number of planes in format
"
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-06744",
"text": " If the pNext
chain includes a VkImageCompressionControlEXT structure, format
is not a multi-planar format, and VkImageCompressionControlEXT::flags
includes VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
, then VkImageCompressionControlEXT::compressionControlPlaneCount
must be 1"
}
],
"(VK_EXT_image_compression_control)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06745",
"text": " If the pNext
chain includes a VkImageCompressionControlEXT structure, and VkImageCompressionControlEXT::flags
includes VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
, then VkImageCompressionControlEXT::compressionControlPlaneCount
must be 1"
}
],
"(VK_EXT_image_compression_control)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06746",
"text": " If the pNext
chain includes a VkImageCompressionControlEXT structure, it must not contain a VkImageDrmFormatModifierExplicitCreateInfoEXT structure"
}
],
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkImageCreateInfo-pNext-06783",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be either VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
or VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-06784",
"text": " If the pNext
chain includes a VkImportMetalTextureInfoEXT structure its plane
member must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-06785",
"text": " If the pNext
chain includes a VkImportMetalTextureInfoEXT structure and the image does not have a multi-planar format, then VkImportMetalTextureInfoEXT::plane
must be VK_IMAGE_ASPECT_PLANE_0_BIT
."
},
{
"vuid": "VUID-VkImageCreateInfo-pNext-06786",
"text": " If the pNext
chain includes a VkImportMetalTextureInfoEXT structure and the image has a multi-planar format with only two planes, then VkImportMetalTextureInfoEXT::plane
must not be VK_IMAGE_ASPECT_PLANE_2_BIT
."
}
]
},
"VkBufferCollectionImageCreateInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBufferCollectionImageCreateInfoFUCHSIA-index-06391",
"text": " index
must be less than VkBufferCollectionPropertiesFUCHSIA::bufferCount
"
},
{
"vuid": "VUID-VkBufferCollectionImageCreateInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkBufferCollectionImageCreateInfoFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
}
]
},
"VkImageStencilUsageCreateInfo": {
"(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539",
"text": " If stencilUsage
includes VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT
, it must not include bits other than VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageStencilUsageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter",
"text": " stencilUsage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask",
"text": " stencilUsage
must not be 0
"
}
]
},
"VkDedicatedAllocationImageCreateInfoNV": {
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
"text": " If dedicatedAllocation
is VK_TRUE
, VkImageCreateInfo::flags
must not include VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
},
{
"vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV
"
}
]
},
"VkExternalMemoryImageCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBits values"
}
]
},
"VkExternalMemoryImageCreateInfoNV": {
"(VK_NV_external_memory)": [
{
"vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
"text": " handleTypes
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
}
]
},
"VkExternalFormatANDROID": {
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
"text": " externalFormat
must be 0
or a value returned in the externalFormat
member of VkAndroidHardwareBufferFormatPropertiesANDROID by an earlier call to vkGetAndroidHardwareBufferPropertiesANDROID"
},
{
"vuid": "VUID-VkExternalFormatANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID
"
}
]
},
"VkImageSwapchainCreateInfoKHR": {
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
"text": " If swapchain
is not VK_NULL_HANDLE, the fields of VkImageCreateInfo must match the implied image creation parameters of the swapchain"
},
{
"vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
"text": " If swapchain
is not VK_NULL_HANDLE, swapchain
must be a valid VkSwapchainKHR handle"
}
]
},
"VkImageFormatListCreateInfo": {
"(VK_VERSION_1_2,VK_KHR_image_format_list)": [
{
"vuid": "VUID-VkImageFormatListCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO
"
},
{
"vuid": "VUID-VkImageFormatListCreateInfo-pViewFormats-parameter",
"text": " If viewFormatCount
is not 0
, pViewFormats
must be a valid pointer to an array of viewFormatCount
valid VkFormat values"
}
]
},
"VkImageDrmFormatModifierListCreateInfoEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
"text": " Each modifier in pDrmFormatModifiers
must be compatible with the parameters in VkImageCreateInfo and its pNext
chain, as determined by querying VkPhysicalDeviceImageFormatInfo2 extended with VkPhysicalDeviceImageDrmFormatModifierInfoEXT"
},
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
"text": " pDrmFormatModifiers
must be a valid pointer to an array of drmFormatModifierCount
uint64_t
values"
},
{
"vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
"text": " drmFormatModifierCount
must be greater than 0
"
}
]
},
"VkImageDrmFormatModifierExplicitCreateInfoEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
"text": " drmFormatModifier
must be compatible with the parameters in VkImageCreateInfo and its pNext
chain, as determined by querying VkPhysicalDeviceImageFormatInfo2 extended with VkPhysicalDeviceImageDrmFormatModifierInfoEXT"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
"text": " drmFormatModifierPlaneCount
must be equal to the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with VkImageCreateInfo::format
and drmFormatModifier
, as found by querying VkDrmFormatModifierPropertiesListEXT"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
"text": " For each element of pPlaneLayouts
, size
must be 0"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
"text": " For each element of pPlaneLayouts
, arrayPitch
must be 0 if VkImageCreateInfo::arrayLayers
is 1"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
"text": " For each element of pPlaneLayouts
, depthPitch
must be 0 if VkImageCreateInfo::extent.depth
is 1"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
"text": " If drmFormatModifierPlaneCount
is not 0
, pPlaneLayouts
must be a valid pointer to an array of drmFormatModifierPlaneCount
VkSubresourceLayout structures"
}
]
},
"VkImageCompressionControlEXT": {
"(VK_EXT_image_compression_control)": [
{
"vuid": "VUID-VkImageCompressionControlEXT-flags-06747",
"text": " flags
must be one of VK_IMAGE_COMPRESSION_DEFAULT_EXT
, VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT
, VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
, or VK_IMAGE_COMPRESSION_DISABLED_EXT
"
},
{
"vuid": "VUID-VkImageCompressionControlEXT-flags-06748",
"text": " If flags
includes VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT
, pFixedRateFlags
must not be NULL
"
},
{
"vuid": "VUID-VkImageCompressionControlEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT
"
}
]
},
"VkImageCompressionPropertiesEXT": {
"(VK_EXT_image_compression_control)": [
{
"vuid": "VUID-VkImageCompressionPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT
"
}
]
},
"vkGetImageSubresourceLayout": {
"!(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
and the index i must be less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with the image’s format
and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier
"
}
],
"core": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
"text": " The aspectMask
member of pSubresource
must only have a single bit set"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
"text": " The mipLevel
member of pSubresource
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
"text": " The arrayLayer
member of pSubresource
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-04461",
"text": " If format
is a color format, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-04462",
"text": " If format
has a depth component, the aspectMask
member of pSubresource
must contain VK_IMAGE_ASPECT_DEPTH_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-04463",
"text": " If format
has a stencil component, the aspectMask
member of pSubresource
must contain VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-04464",
"text": " If format
does not contain a stencil or depth component, the aspectMask
member of pSubresource
must not contain VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
"text": " pSubresource
must be a valid pointer to a valid VkImageSubresource structure"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
"text": " pLayout
must be a valid pointer to a VkSubresourceLayout structure"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_LINEAR
and its format
is a multi-planar format with two planes, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_LINEAR
and its format
is a multi-planar format with three planes, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
"text": " If image
was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
external memory handle type, then image
must be bound to memory"
}
]
},
"VkImageSubresource": {
"core": [
{
"vuid": "VUID-VkImageSubresource-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
]
},
"vkGetImageSubresourceLayout2EXT": {
"(VK_EXT_image_compression_control)+!(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-image-00996",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
"
}
],
"(VK_EXT_image_compression_control)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-image-02270",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-tiling-02271",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
and the index i must be less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with the image’s format
and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier
"
}
],
"(VK_EXT_image_compression_control)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-aspectMask-00997",
"text": " The aspectMask
member of pSubresource
must only have a single bit set"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-mipLevel-01716",
"text": " The mipLevel
member of pSubresource
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-arrayLayer-01717",
"text": " The arrayLayer
member of pSubresource
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-format-04461",
"text": " If format
is a color format, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-format-04462",
"text": " If format
has a depth component, the aspectMask
member of pSubresource
must contain VK_IMAGE_ASPECT_DEPTH_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-format-04463",
"text": " If format
has a stencil component, the aspectMask
member of pSubresource
must contain VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-format-04464",
"text": " If format
does not contain a stencil or depth component, the aspectMask
member of pSubresource
must not contain VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-pSubresource-parameter",
"text": " pSubresource
must be a valid pointer to a valid VkImageSubresource2EXT structure"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-pLayout-parameter",
"text": " pLayout
must be a valid pointer to a VkSubresourceLayout2EXT structure"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
],
"(VK_EXT_image_compression_control)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-format-01581",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_LINEAR
and its format
is a multi-planar format with two planes, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-format-01582",
"text": " If the tiling
of the image
is VK_IMAGE_TILING_LINEAR
and its format
is a multi-planar format with three planes, the aspectMask
member of pSubresource
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_EXT_image_compression_control)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetImageSubresourceLayout2EXT-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"
}
]
},
"VkImageSubresource2EXT": {
"(VK_EXT_image_compression_control)": [
{
"vuid": "VUID-VkImageSubresource2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT
"
},
{
"vuid": "VUID-VkImageSubresource2EXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageSubresource2EXT-imageSubresource-parameter",
"text": " imageSubresource
must be a valid VkImageSubresource structure"
}
]
},
"VkSubresourceLayout2EXT": {
"(VK_EXT_image_compression_control)": [
{
"vuid": "VUID-VkSubresourceLayout2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT
"
},
{
"vuid": "VUID-VkSubresourceLayout2EXT-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkImageCompressionPropertiesEXT"
},
{
"vuid": "VUID-VkSubresourceLayout2EXT-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"vkGetImageDrmFormatModifierPropertiesEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
"text": " image
must have been created with tiling
equal to VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkImageDrmFormatModifierPropertiesEXT structure"
},
{
"vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
}
]
},
"VkImageDrmFormatModifierPropertiesEXT": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkDestroyImage": {
"core": [
{
"vuid": "VUID-vkDestroyImage-image-01000",
"text": " All submitted commands that refer to image
, either directly or via a VkImageView
, must have completed execution"
},
{
"vuid": "VUID-vkDestroyImage-image-01001",
"text": " If VkAllocationCallbacks
were provided when image
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyImage-image-01002",
"text": " If no VkAllocationCallbacks
were provided when image
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyImage-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyImage-image-parameter",
"text": " If image
is not VK_NULL_HANDLE, image
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkDestroyImage-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyImage-image-parent",
"text": " If image
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkDestroyImage-image-04882",
"text": " image
must not have been acquired from vkGetSwapchainImagesKHR"
}
]
},
"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 imageCubeArray
feature is not enabled, viewType
must not be VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-04441",
"text": " image
must have been created with a usage
value containing at least one of the usages defined in the valid image usage list for image views"
},
{
"vuid": "VUID-VkImageViewCreateInfo-None-02273",
"text": " The format features of the resultant image view must contain at least one bit"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02274",
"text": " If usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, then the format features of the resultant image view must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02275",
"text": " If usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02276",
"text": " If usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02277",
"text": " If usage
contains VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-02652",
"text": " If usage
contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, then the image view’s format features must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
"text": " subresourceRange.baseMipLevel
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
"text": " If subresourceRange.levelCount
is not VK_REMAINING_MIP_LEVELS
, subresourceRange.baseMipLevel
+ subresourceRange.levelCount
must be less than or equal to the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-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": " viewType
must be compatible with the type of image
as shown in the view type compatibility table"
},
{
"vuid": "VUID-VkImageViewCreateInfo-imageViewType-04973",
"text": " If viewType
is VK_IMAGE_VIEW_TYPE_1D
, VK_IMAGE_VIEW_TYPE_2D
, or VK_IMAGE_VIEW_TYPE_3D
; and subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, then subresourceRange.layerCount
must be 1"
},
{
"vuid": "VUID-VkImageViewCreateInfo-imageViewType-04974",
"text": " If viewType
is VK_IMAGE_VIEW_TYPE_1D
, VK_IMAGE_VIEW_TYPE_2D
, or VK_IMAGE_VIEW_TYPE_3D
; and subresourceRange.layerCount
is VK_REMAINING_ARRAY_LAYERS
, then the remaining number of layers must be 1"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-02960",
"text": " If viewType
is VK_IMAGE_VIEW_TYPE_CUBE
and subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, subresourceRange.layerCount
must be 6
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-02961",
"text": " If viewType
is VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
and subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, subresourceRange.layerCount
must be a multiple of 6
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-02962",
"text": " If viewType
is VK_IMAGE_VIEW_TYPE_CUBE
and subresourceRange.layerCount
is VK_REMAINING_ARRAY_LAYERS
, the remaining number of layers must be 6
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-02963",
"text": " If viewType
is VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
and subresourceRange.layerCount
is VK_REMAINING_ARRAY_LAYERS
, the remaining number of layers must be a multiple of 6
"
},
{
"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 VkExportMetalObjectCreateInfoEXT, VkImageViewASTCDecodeModeEXT, VkImageViewMinLodCreateInfoEXT, VkImageViewSampleWeightCreateInfoQCOM, VkImageViewUsageCreateInfo, or VkSamplerYcbcrConversionInfo"
},
{
"vuid": "VUID-VkImageViewCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkImageViewCreateFlagBits values"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
"text": " viewType
must be a valid VkImageViewType value"
},
{
"vuid": "VUID-VkImageViewCreateInfo-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkImageViewCreateInfo-components-parameter",
"text": " components
must be a valid VkComponentMapping structure"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
"text": " subresourceRange
must be a valid VkImageSubresourceRange structure"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-06723",
"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_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-04970",
"text": " If image
was created with VK_IMAGE_TYPE_3D
and viewType
is VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
then subresourceRange.levelCount
must be 1"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-04971",
"text": " If image
was created with VK_IMAGE_TYPE_3D
and viewType
is VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
then VkImageCreateInfo::flags
must not contain any of VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, and VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-04972",
"text": " If image
was created with a samples
value not equal to VK_SAMPLE_COUNT_1_BIT
then viewType
must be either VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02724",
"text": " If image
is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, and viewType
is VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
, subresourceRange.baseArrayLayer
must be less than the depth computed from baseMipLevel
and extent.depth
specified in VkImageCreateInfo when image
was created, according to the formula defined in Image Miplevel Sizing"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725",
"text": " If subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, image
is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
set, and viewType
is VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
, subresourceRange.layerCount
must be non-zero and subresourceRange.baseArrayLayer
+ subresourceRange.layerCount
must be less than or equal to the depth computed from baseMipLevel
and extent.depth
specified in VkImageCreateInfo when image
was created, according to the formula defined in Image Miplevel Sizing"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VK_EXT_image_2d_view_of_3d)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-06727",
"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
"
},
{
"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"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)+(VK_EXT_image_2d_view_of_3d)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-06728",
"text": " If image
was created with VK_IMAGE_TYPE_3D
but without VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
or VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
set, then viewType
must not be VK_IMAGE_VIEW_TYPE_2D
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-06724",
"text": " If image
is not a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT
or VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
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-06725",
"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
or VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
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"
}
],
"(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkImageViewCreateInfo-usage-06516",
"text": " If usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
, if the image is created with VK_IMAGE_TILING_LINEAR
and the linearColorAttachment
feature is enabled"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-06517",
"text": " If usage
contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, then the image view’s format features must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
, if the image is created with VK_IMAGE_TILING_LINEAR
and the linearColorAttachment
feature is enabled"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02571",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, subresourceRange.levelCount
must be 1
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-02572",
"text": " If the fragmentDensityMapDynamic
feature is not enabled, flags
must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-04116",
"text": " If flags
does not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
and image
was created with usage
containing VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT
, its flags
must not contain any of VK_IMAGE_CREATE_PROTECTED_BIT
, VK_IMAGE_CREATE_SPARSE_BINDING_BIT
, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT
"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
"text": " subresourceRange.baseArrayLayer
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
"text": " If subresourceRange.layerCount
is not VK_REMAINING_ARRAY_LAYERS
, subresourceRange.baseArrayLayer
+ subresourceRange.layerCount
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when image
was created"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01018",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01759",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, but without the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01760",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, and if the format
of the image
is not a multi-planar format, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01761",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, but without the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, and if the format
of the image
is not a multi-planar format, format
must be compatible with the format
used to create image
, as defined in Format Compatibility Classes"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01583",
"text": " If image
was created with the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag, format
must be compatible with, or must be an uncompressed format that is size-compatible with, the format
used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-07072",
"text": " If image
was created with the VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT
flag and format
is a non-compressed format, the levelCount
and layerCount
members of subresourceRange
must both be 1
"
}
],
"(VK_VERSION_1_2,VK_KHR_image_format_list)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
"text": " If a VkImageFormatListCreateInfo structure was included in the pNext
chain of the VkImageCreateInfo structure used when creating image
and VkImageFormatListCreateInfo::viewFormatCount
is not zero then format
must be one of the formats in VkImageFormatListCreateInfo::pViewFormats
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01586",
"text": " If image
was created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, if the format
of the image
is a multi-planar format, and if subresourceRange.aspectMask
is one of VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
, then format
must be compatible with the VkFormat for the plane of the image
format
indicated by subresourceRange.aspectMask
, as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-01762",
"text": " If image
was not created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, or if the format
of the image
is a multi-planar format and if subresourceRange.aspectMask
is VK_IMAGE_ASPECT_COLOR_BIT
, format
must be identical to the format
used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-format-06415",
"text": " If the image view requires a sampler {YCbCr} conversion and usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, then the pNext
chain must include a VkSamplerYcbcrConversionInfo structure with a conversion value other than VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkImageViewCreateInfo-format-04714",
"text": " If format
has a _422
or _420
suffix then image
must have been created with a width that is a multiple of 2"
},
{
"vuid": "VUID-VkImageViewCreateInfo-format-04715",
"text": " If format
has a _420
suffix then image
must have been created with a height that is a multiple of 2"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
"text": " If the pNext
chain includes a VkSamplerYcbcrConversionInfo structure with a conversion
value other than VK_NULL_HANDLE, all members of components
must have the identity swizzle"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06658",
"text": " If the pNext
chain includes a VkSamplerYcbcrConversionInfo structure with a conversion
value other than VK_NULL_HANDLE, format
must be the same used in VkSamplerYcbcrConversionCreateInfo::format
"
}
],
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-01019",
"text": " If image
was not created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
flag, format
must be identical to the format
used to create image
"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02399",
"text": " If image
has an external format, format
must be VK_FORMAT_UNDEFINED
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02400",
"text": " If image
has an external format, the pNext
chain must include a VkSamplerYcbcrConversionInfo structure with a conversion
object created with the same external format as image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-02401",
"text": " If image
has an external format, all members of components
must be the identity swizzle"
}
],
"(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02086",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
, viewType
must be VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
"
}
],
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-02087",
"text": " If the shadingRateImage
feature is enabled, and If image
was created with usage
containing VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
, format
must be VK_FORMAT_R8_UINT
"
}
],
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkImageViewCreateInfo-usage-04550",
"text": " If the attachmentFragmentShadingRate
feature is enabled, and the usage
for the image view includes VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
, then the image view’s format features must contain VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-usage-04551",
"text": " If the attachmentFragmentShadingRate
feature is enabled, the usage
for the image view includes VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
, and layeredShadingRateAttachments
is VK_FALSE
, subresourceRange.layerCount
must be 1
"
}
],
"(VK_EXT_fragment_density_map)+(VK_EXT_fragment_density_map2)": [
{
"vuid": "VUID-VkImageViewCreateInfo-flags-03567",
"text": " If the fragmentDensityMapDeferred
feature is not enabled, flags
must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-flags-03568",
"text": " If flags
contains VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT
, flags
must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-image-03569",
"text": " If image
was created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
and usage
containing VK_IMAGE_USAGE_SAMPLED_BIT
, subresourceRange.layerCount
must be less than or equal to VkPhysicalDeviceFragmentDensityMap2PropertiesEXT
::maxSubsampledArrayLayers
"
}
],
"(VK_EXT_fragment_density_map)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkImageViewCreateInfo-invocationMask-04993",
"text": " If the invocationMask
feature is enabled, and if image
was created with usage
containing VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
, format
must be VK_FORMAT_R8_UINT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02661",
"text": " If the pNext
chain includes a VkImageViewUsageCreateInfo structure, its usage
member must not include any bits that were not set in the usage
member of the VkImageCreateInfo structure used to create image
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02662",
"text": " If the pNext
chain includes a VkImageViewUsageCreateInfo structure, and image
was not created with a VkImageStencilUsageCreateInfo structure included in the pNext
chain of VkImageCreateInfo, its usage
member must not include any bits that were not set in the usage
member of the VkImageCreateInfo structure used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02663",
"text": " If the pNext
chain includes a VkImageViewUsageCreateInfo structure, image
was created with a VkImageStencilUsageCreateInfo structure included in the pNext
chain of VkImageCreateInfo, and subresourceRange.aspectMask
includes VK_IMAGE_ASPECT_STENCIL_BIT
, the usage
member of the VkImageViewUsageCreateInfo structure must not include any bits that were not set in the usage
member of the VkImageStencilUsageCreateInfo structure used to create image
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-02664",
"text": " If the pNext
chain includes a VkImageViewUsageCreateInfo structure, image
was created with a VkImageStencilUsageCreateInfo structure included in the pNext
chain of VkImageCreateInfo, and subresourceRange.aspectMask
includes bits other than VK_IMAGE_ASPECT_STENCIL_BIT
, the usage
member of the VkImageViewUsageCreateInfo structure must not include any bits that were not set in the usage
member of the VkImageCreateInfo structure used to create image
"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageViewFormatSwizzle
is VK_FALSE
, all elements of components
must have the identity swizzle"
},
{
"vuid": "VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::imageViewFormatReinterpretation
is VK_FALSE
, the VkFormat in format
must not contain a different number of components, or a different number of bits in each component, than the format of the VkImage
in image
"
}
],
"(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-04817",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
, then the viewType
must be VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
and all members of components
must have the identity swizzle"
}
],
"(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkImageViewCreateInfo-image-04818",
"text": " If image
was created with usage
containing VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
, VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
, then the viewType
must be VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
and all members of components
must have the identity swizzle"
}
],
"(VK_EXT_metal_objects)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06787",
"text": " If the pNext
chain includes a VkExportMetalObjectCreateInfoEXT structure, its exportObjectType
member must be VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT
."
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06944",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure, then textureSampleWeighted
feature must be enabled"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06945",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure, then image
must have been created with usage
containing VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06946",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure, then components
must be VK_COMPONENT_SWIZZLE_IDENTITY
for all components"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06947",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure, then subresourceRange.aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06948",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure, then subresourceRange.levelCount
must be 1
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06949",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure, then viewType
must be VK_IMAGE_VIEW_TYPE_1D_ARRAY
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06950",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and if viewType
is VK_IMAGE_VIEW_TYPE_1D_ARRAY
, then image
must have been created with imageType
VK_IMAGE_TYPE_1D
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06951",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and viewType
is VK_IMAGE_VIEW_TYPE_1D_ARRAY
, then subresourceRange.layerCount
must be equal to 2
."
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06952",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and viewType
is VK_IMAGE_VIEW_TYPE_1D_ARRAY
, then image
must have been created with width
equal to or greater than \\((numPhases \\times \\mathbin{max}\\left( \\mathbin{align}\\left(filterSize.width,4\\right), filterSize.height\\right))\\)"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06953",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and if viewType
is VK_IMAGE_VIEW_TYPE_2D_ARRAY
, then image
must have been created with imageType
VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06954",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and viewType
is VK_IMAGE_VIEW_TYPE_2D_ARRAY
, then subresourceRange.layerCount
must be equal or greater than numPhases"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06955",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and viewType
is VK_IMAGE_VIEW_TYPE_2D_ARRAY
, then image
must have been created with width
equal to or greater than filterSize.width
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06956",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure and viewType
is VK_IMAGE_VIEW_TYPE_2D_ARRAY
, then image
must have been created with height
equal to or greater than filterSize.height
"
},
{
"vuid": "VUID-VkImageViewCreateInfo-pNext-06957",
"text": " If the pNext
chain includes VkImageViewSampleWeightCreateInfoQCOM structure then VkImageViewSampleWeightCreateInfoQCOM::filterSize.height
must be less than or equal to VkPhysicalDeviceImageProcessingPropertiesQCOM
::maxWeightFilterDimension.height
"
}
]
},
"VkImageViewUsageCreateInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO
"
},
{
"vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
}
]
},
"VkImageSubresourceRange": {
"core": [
{
"vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
"text": " If levelCount
is not VK_REMAINING_MIP_LEVELS
, it must be greater than 0
"
},
{
"vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
"text": " If layerCount
is not VK_REMAINING_ARRAY_LAYERS
, it must be greater than 0
"
},
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
"text": " If aspectMask
includes VK_IMAGE_ASPECT_COLOR_BIT
, then it must not include any of VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
, or VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
for any index i"
}
]
},
"VkComponentMapping": {
"core": [
{
"vuid": "VUID-VkComponentMapping-r-parameter",
"text": " r
must be a valid VkComponentSwizzle value"
},
{
"vuid": "VUID-VkComponentMapping-g-parameter",
"text": " g
must be a valid VkComponentSwizzle value"
},
{
"vuid": "VUID-VkComponentMapping-b-parameter",
"text": " b
must be a valid VkComponentSwizzle value"
},
{
"vuid": "VUID-VkComponentMapping-a-parameter",
"text": " a
must be a valid VkComponentSwizzle value"
}
]
},
"VkImageViewASTCDecodeModeEXT": {
"(VK_EXT_astc_decode_mode)": [
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
"text": " decodeMode
must be one of VK_FORMAT_R16G16B16A16_SFLOAT
, VK_FORMAT_R8G8B8A8_UNORM
, or VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
"text": " If the decodeModeSharedExponent
feature is not enabled, decodeMode
must not be VK_FORMAT_E5B9G9R9_UFLOAT_PACK32
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
"text": " If decodeMode
is VK_FORMAT_R8G8B8A8_UNORM
the image view must not include blocks using any of the ASTC HDR modes"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-04084",
"text": " format
of the image view must be one of the ASTC Compressed Image Formats"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT
"
},
{
"vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
"text": " decodeMode
must be a valid VkFormat value"
}
]
},
"VkImageViewSampleWeightCreateInfoQCOM": {
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterSize-06958",
"text": " filterSize.width
must be less than or equal to VkPhysicalDeviceImageProcessingPropertiesQCOM
::maxWeightFilterDimension.width
"
},
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterSize-06959",
"text": " filterSize.height
must be less than or equal to VkPhysicalDeviceImageProcessingPropertiesQCOM
::maxWeightFilterDimension.height
"
},
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterCenter-06960",
"text": " filterCenter.x
must be less than or equal to (filterSize.width - 1)"
},
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-filterCenter-06961",
"text": " filterCenter.y
must be less than or equal to (filterSize.height - 1)"
},
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06962",
"text": " numPhases
must be a power of two squared value (i.e., 1, 4, 16, 64, 256, etc.)"
},
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-numPhases-06963",
"text": " numPhases
must be less than or equal to VkPhysicalDeviceImageProcessingPropertiesQCOM
::maxWeightFilterPhases
"
},
{
"vuid": "VUID-VkImageViewSampleWeightCreateInfoQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM
"
}
]
},
"vkDestroyImageView": {
"core": [
{
"vuid": "VUID-vkDestroyImageView-imageView-01026",
"text": " All submitted commands that refer to imageView
must have completed execution"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-01027",
"text": " If VkAllocationCallbacks
were provided when imageView
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-01028",
"text": " If no VkAllocationCallbacks
were provided when imageView
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyImageView-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyImageView-imageView-parent",
"text": " If imageView
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetImageViewHandleNVX": {
"(VK_NVX_image_view_handle)": [
{
"vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkImageViewHandleInfoNVX structure"
}
]
},
"VkImageViewHandleInfoNVX": {
"(VK_NVX_image_view_handle)": [
{
"vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
"text": " descriptorType
must be VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
"text": " sampler
must be a valid VkSampler if descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
"text": " If descriptorType is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, the image that imageView
was created from must have been created with the VK_IMAGE_USAGE_SAMPLED_BIT
usage bit set"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
"text": " If descriptorType is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, the image that imageView
was created from must have been created with the VK_IMAGE_USAGE_STORAGE_BIT
usage bit set"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
"text": " imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
"text": " If sampler
is not VK_NULL_HANDLE, sampler
must be a valid VkSampler handle"
},
{
"vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
"text": " Both of imageView
, and sampler
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkGetImageViewAddressNVX": {
"(VK_NVX_image_view_handle)": [
{
"vuid": "VUID-vkGetImageViewAddressNVX-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetImageViewAddressNVX-imageView-parameter",
"text": " imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-vkGetImageViewAddressNVX-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkImageViewAddressPropertiesNVX structure"
},
{
"vuid": "VUID-vkGetImageViewAddressNVX-imageView-parent",
"text": " imageView
must have been created, allocated, or retrieved from device
"
}
]
},
"VkImageViewAddressPropertiesNVX": {
"(VK_NVX_image_view_handle)": [
{
"vuid": "VUID-VkImageViewAddressPropertiesNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX
"
},
{
"vuid": "VUID-VkImageViewAddressPropertiesNVX-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkImageViewMinLodCreateInfoEXT": {
"(VK_EXT_image_view_min_lod)": [
{
"vuid": "VUID-VkImageViewMinLodCreateInfoEXT-minLod-06455",
"text": " If the minLod
feature is not enabled, minLod
must be 0.0
."
},
{
"vuid": "VUID-VkImageViewMinLodCreateInfoEXT-minLod-06456",
"text": " minLod
must be less or equal to the index of the last mipmap level accessible to the view."
},
{
"vuid": "VUID-VkImageViewMinLodCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT
"
}
]
},
"vkCreateAccelerationStructureNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkAccelerationStructureCreateInfoNV structure"
},
{
"vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
"text": " pAccelerationStructure
must be a valid pointer to a VkAccelerationStructureNV handle"
}
]
},
"VkAccelerationStructureCreateInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
"text": " If compactedSize
is not 0
then both info.geometryCount
and info.instanceCount
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
"text": " info
must be a valid VkAccelerationStructureInfoNV structure"
}
]
},
"VkAccelerationStructureInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
"text": " geometryCount
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxGeometryCount
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
"text": " instanceCount
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxInstanceCount
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
"text": " The total number of triangles in all geometries must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxTriangleCount
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV
then geometryCount
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
then instanceCount
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-02786",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV
then the geometryType
member of each geometry in pGeometries
must be the same"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
"text": " If flags
has the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV
bit set, then it must not have the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV
bit set"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781",
"text": " scratch
must have been created with VK_BUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782",
"text": " If instanceData
is not VK_NULL_HANDLE, instanceData
must have been created with VK_BUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
"text": " type
must be a valid VkAccelerationStructureTypeNV value"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkBuildAccelerationStructureFlagBitsNV values"
},
{
"vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
"text": " If geometryCount
is not 0
, pGeometries
must be a valid pointer to an array of geometryCount
valid VkGeometryNV structures"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureInfoNV-type-04623",
"text": " type
must not be VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
}
]
},
"vkCreateAccelerationStructureKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-accelerationStructure-03611",
"text": " The accelerationStructure
feature must be enabled"
},
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488",
"text": " If VkAccelerationStructureCreateInfoKHR::deviceAddress
is not zero, the accelerationStructureCaptureReplay
feature must be enabled"
},
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
feature must be enabled"
},
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkAccelerationStructureCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter",
"text": " pAccelerationStructure
must be a valid pointer to a VkAccelerationStructureKHR handle"
}
]
},
"VkAccelerationStructureCreateInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03612",
"text": " If deviceAddress
is not zero, createFlags
must include VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-03613",
"text": " If createFlags
includes VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR
, VkPhysicalDeviceAccelerationStructureFeaturesKHR::accelerationStructureCaptureReplay
must be VK_TRUE
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03614",
"text": " buffer
must have been created with a usage
value containing VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-03615",
"text": " buffer
must not have been created with VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03616",
"text": " The sum of offset
and size
must be less than the size of buffer
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-offset-03734",
"text": " offset
must be a multiple of 256
bytes"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkAccelerationStructureMotionInfoNV"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-createFlags-parameter",
"text": " createFlags
must be a valid combination of VkAccelerationStructureCreateFlagBitsKHR values"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter",
"text": " type
must be a valid VkAccelerationStructureTypeKHR value"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-04954",
"text": " If VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
is set in flags
and type
is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
, one member of the pNext
chain must be a pointer to a valid instance of VkAccelerationStructureMotionInfoNV"
},
{
"vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-04955",
"text": " If any geometry includes VkAccelerationStructureGeometryMotionTrianglesDataNV
then flags
must contain VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
"
}
]
},
"VkAccelerationStructureMotionInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureMotionInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureMotionInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkGetAccelerationStructureBuildSizesKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-rayTracingPipeline-03617",
"text": " The rayTracingPipeline
or rayQuery
feature must be enabled"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-03618",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
feature must be enabled"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03619",
"text": " If pBuildInfo->geometryCount
is not 0
, pMaxPrimitiveCounts
must be a valid pointer to an array of pBuildInfo->geometryCount
uint32_t
values"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-03785",
"text": " If pBuildInfo->pGeometries
or pBuildInfo->ppGeometries
has a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, each pMaxPrimitiveCounts
[i] must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxInstanceCount
"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-buildType-parameter",
"text": " buildType
must be a valid VkAccelerationStructureBuildTypeKHR value"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pBuildInfo-parameter",
"text": " pBuildInfo
must be a valid pointer to a valid VkAccelerationStructureBuildGeometryInfoKHR structure"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pMaxPrimitiveCounts-parameter",
"text": " If pMaxPrimitiveCounts
is not NULL
, pMaxPrimitiveCounts
must be a valid pointer to an array of pBuildInfo->geometryCount
uint32_t
values"
},
{
"vuid": "VUID-vkGetAccelerationStructureBuildSizesKHR-pSizeInfo-parameter",
"text": " pSizeInfo
must be a valid pointer to a VkAccelerationStructureBuildSizesInfoKHR structure"
}
]
},
"VkAccelerationStructureBuildSizesInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildSizesInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkGeometryNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryNV-geometryType-03503",
"text": " geometryType
must be VK_GEOMETRY_TYPE_TRIANGLES_NV
or VK_GEOMETRY_TYPE_AABBS_NV
"
},
{
"vuid": "VUID-VkGeometryNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GEOMETRY_NV
"
},
{
"vuid": "VUID-VkGeometryNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeometryNV-geometryType-parameter",
"text": " geometryType
must be a valid VkGeometryTypeKHR value"
},
{
"vuid": "VUID-VkGeometryNV-geometry-parameter",
"text": " geometry
must be a valid VkGeometryDataNV structure"
},
{
"vuid": "VUID-VkGeometryNV-flags-parameter",
"text": " flags
must be a valid combination of VkGeometryFlagBitsKHR values"
}
]
},
"VkGeometryDataNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryDataNV-triangles-parameter",
"text": " triangles
must be a valid VkGeometryTrianglesNV structure"
},
{
"vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
"text": " aabbs
must be a valid VkGeometryAABBNV structure"
}
]
},
"VkGeometryTrianglesNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
"text": " vertexOffset
must be less than the size of vertexData
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
"text": " vertexOffset
must be a multiple of the component size of vertexFormat
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
"text": " vertexFormat
must be one of VK_FORMAT_R32G32B32_SFLOAT
, VK_FORMAT_R32G32_SFLOAT
, VK_FORMAT_R16G16B16_SFLOAT
, VK_FORMAT_R16G16_SFLOAT
, VK_FORMAT_R16G16_SNORM
, or VK_FORMAT_R16G16B16_SNORM
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexStride-03818",
"text": " vertexStride
must be less than or equal to 232-1"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
"text": " indexOffset
must be less than the size of indexData
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
"text": " indexOffset
must be a multiple of the element size of indexType
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
"text": " indexType
must be VK_INDEX_TYPE_UINT16
, VK_INDEX_TYPE_UINT32
, or VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
"text": " indexData
must be VK_NULL_HANDLE if indexType
is VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
"text": " indexData
must be a valid VkBuffer
handle if indexType
is not VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
"text": " indexCount
must be 0
if indexType
is VK_INDEX_TYPE_NONE_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
"text": " transformOffset
must be less than the size of transformData
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
"text": " transformOffset
must be a multiple of 16
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
"text": " If vertexData
is not VK_NULL_HANDLE, vertexData
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
"text": " vertexFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
"text": " If indexData
is not VK_NULL_HANDLE, indexData
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
"text": " If transformData
is not VK_NULL_HANDLE, transformData
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkGeometryTrianglesNV-commonparent",
"text": " Each of indexData
, transformData
, and vertexData
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkGeometryAABBNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkGeometryAABBNV-offset-02439",
"text": " offset
must be less than the size of aabbData
"
},
{
"vuid": "VUID-VkGeometryAABBNV-offset-02440",
"text": " offset
must be a multiple of 8
"
},
{
"vuid": "VUID-VkGeometryAABBNV-stride-02441",
"text": " stride
must be a multiple of 8
"
},
{
"vuid": "VUID-VkGeometryAABBNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV
"
},
{
"vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
"text": " If aabbData
is not VK_NULL_HANDLE, aabbData
must be a valid VkBuffer handle"
}
]
},
"vkDestroyAccelerationStructureKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442",
"text": " All submitted commands that refer to accelerationStructure
must have completed execution"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443",
"text": " If VkAllocationCallbacks
were provided when accelerationStructure
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444",
"text": " If no VkAllocationCallbacks
were provided when accelerationStructure
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter",
"text": " If accelerationStructure
is not VK_NULL_HANDLE, accelerationStructure
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent",
"text": " If accelerationStructure
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyAccelerationStructureNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03752",
"text": " All submitted commands that refer to accelerationStructure
must have completed execution"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03753",
"text": " If VkAllocationCallbacks
were provided when accelerationStructure
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-03754",
"text": " If no VkAllocationCallbacks
were provided when accelerationStructure
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
"text": " If accelerationStructure
is not VK_NULL_HANDLE, accelerationStructure
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
"text": " If accelerationStructure
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetAccelerationStructureMemoryRequirementsNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkAccelerationStructureMemoryRequirementsInfoNV structure"
},
{
"vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements2KHR structure"
}
]
},
"VkAccelerationStructureMemoryRequirementsInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV
"
},
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
"text": " type
must be a valid VkAccelerationStructureMemoryRequirementsTypeNV value"
},
{
"vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV handle"
}
]
},
"vkBindAccelerationStructureMemoryNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
"text": " pBindInfos
must be a valid pointer to an array of bindInfoCount
valid VkBindAccelerationStructureMemoryInfoNV structures"
},
{
"vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
"text": " bindInfoCount
must be greater than 0
"
}
]
},
"VkBindAccelerationStructureMemoryInfoNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-03620",
"text": " accelerationStructure
must not already be backed by a memory object"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03621",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-03622",
"text": " memory
must have been allocated using one of the memory types allowed in the memoryTypeBits
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with accelerationStructure
and type
of VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-03623",
"text": " memoryOffset
must be an integer multiple of the alignment
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with accelerationStructure
and type
of VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-03624",
"text": " The size
member of the VkMemoryRequirements
structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with accelerationStructure
and type
of VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
"text": " If deviceIndexCount
is not 0
, pDeviceIndices
must be a valid pointer to an array of deviceIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
"text": " Both of accelerationStructure
, and memory
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkGetAccelerationStructureHandleNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
"text": " dataSize
must be large enough to contain the result of the query, as described above"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787",
"text": " accelerationStructure
must be bound completely and contiguously to a single VkDeviceMemory
object via vkBindAccelerationStructureMemoryNV"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
"text": " accelerationStructure
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetAccelerationStructureDeviceAddressKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
feature must be enabled"
},
{
"vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkAccelerationStructureDeviceAddressInfoKHR structure"
}
]
},
"VkAccelerationStructureDeviceAddressInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter",
"text": " accelerationStructure
must be a valid VkAccelerationStructureKHR handle"
}
]
},
"vkCreateMicromapEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCreateMicromapEXT-micromap-07430",
"text": " The micromap
feature must be enabled"
},
{
"vuid": "VUID-vkCreateMicromapEXT-deviceAddress-07431",
"text": " If VkMicromapCreateInfoEXT::deviceAddress
is not zero, the micromapCaptureReplay
feature must be enabled"
},
{
"vuid": "VUID-vkCreateMicromapEXT-device-07432",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled"
},
{
"vuid": "VUID-vkCreateMicromapEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateMicromapEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkMicromapCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateMicromapEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateMicromapEXT-pMicromap-parameter",
"text": " pMicromap
must be a valid pointer to a VkMicromapEXT handle"
}
]
},
"VkMicromapCreateInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMicromapCreateInfoEXT-deviceAddress-07433",
"text": " If deviceAddress
is not zero, createFlags
must include VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-createFlags-07434",
"text": " If createFlags
includes VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT
, VkPhysicalDeviceOpacityMicromapFeaturesEXT::micromapCaptureReplay
must be VK_TRUE
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-buffer-07435",
"text": " buffer
must have been created with a usage
value containing VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-buffer-07436",
"text": " buffer
must not have been created with VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-offset-07437",
"text": " The sum of offset
and size
must be less than the size of buffer
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-offset-07438",
"text": " offset
must be a multiple of 256
bytes"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-createFlags-parameter",
"text": " createFlags
must be a valid combination of VkMicromapCreateFlagBitsEXT values"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkMicromapCreateInfoEXT-type-parameter",
"text": " type
must be a valid VkMicromapTypeEXT value"
}
]
},
"vkGetMicromapBuildSizesEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkGetMicromapBuildSizesEXT-micromap-07439",
"text": " The micromap
feature must be enabled"
},
{
"vuid": "VUID-vkGetMicromapBuildSizesEXT-device-07440",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice feature must be enabled"
},
{
"vuid": "VUID-vkGetMicromapBuildSizesEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetMicromapBuildSizesEXT-buildType-parameter",
"text": " buildType
must be a valid VkAccelerationStructureBuildTypeKHR value"
},
{
"vuid": "VUID-vkGetMicromapBuildSizesEXT-pBuildInfo-parameter",
"text": " pBuildInfo
must be a valid pointer to a valid VkMicromapBuildInfoEXT structure"
},
{
"vuid": "VUID-vkGetMicromapBuildSizesEXT-pSizeInfo-parameter",
"text": " pSizeInfo
must be a valid pointer to a VkMicromapBuildSizesInfoEXT structure"
}
]
},
"VkMicromapBuildSizesInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMicromapBuildSizesInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT
"
},
{
"vuid": "VUID-VkMicromapBuildSizesInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkDestroyMicromapEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkDestroyMicromapEXT-micromap-07441",
"text": " All submitted commands that refer to micromap
must have completed execution"
},
{
"vuid": "VUID-vkDestroyMicromapEXT-micromap-07442",
"text": " If VkAllocationCallbacks
were provided when micromap
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyMicromapEXT-micromap-07443",
"text": " If no VkAllocationCallbacks
were provided when micromap
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyMicromapEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyMicromapEXT-micromap-parameter",
"text": " If micromap
is not VK_NULL_HANDLE, micromap
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-vkDestroyMicromapEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyMicromapEXT-micromap-parent",
"text": " If micromap
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"
}
],
"(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetImageMemoryRequirements-image-04004",
"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"
}
],
"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"
}
]
},
"vkGetDeviceBufferMemoryRequirements": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkGetDeviceBufferMemoryRequirements-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceBufferMemoryRequirements-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkDeviceBufferMemoryRequirements structure"
},
{
"vuid": "VUID-vkGetDeviceBufferMemoryRequirements-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"
}
]
},
"VkDeviceBufferMemoryRequirements": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-VkDeviceBufferMemoryRequirements-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS
"
},
{
"vuid": "VUID-VkDeviceBufferMemoryRequirements-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceBufferMemoryRequirements-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkBufferCreateInfo structure"
}
]
},
"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"
}
]
},
"vkGetDeviceImageMemoryRequirements": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkGetDeviceImageMemoryRequirements-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceImageMemoryRequirements-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkDeviceImageMemoryRequirements structure"
},
{
"vuid": "VUID-vkGetDeviceImageMemoryRequirements-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 included 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 included in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
"text": " If image
was created with VK_IMAGE_CREATE_DISJOINT_BIT
and with VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then there must be a VkImagePlaneMemoryRequirementsInfo included in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
},
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
"text": " If image
was created with a single-plane format and with any tiling
other than VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then there must not be a VkImagePlaneMemoryRequirementsInfo included in the pNext
chain of the VkImageMemoryRequirementsInfo2 structure"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
"text": " If image
was created with a single-plane format, there must not be a VkImagePlaneMemoryRequirementsInfo included 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-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
"text": " image
must be a valid VkImage handle"
}
]
},
"VkDeviceImageMemoryRequirements": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06416",
"text": " The pCreateInfo
::pNext
chain must not contain a VkImageSwapchainCreateInfoKHR structure"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06417",
"text": " If pCreateInfo
::format
specifies a multi-planar format and pCreateInfo
::flags
has VK_IMAGE_CREATE_DISJOINT_BIT
set then planeAspect
must not be VK_IMAGE_ASPECT_NONE_KHR
"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06419",
"text": " If pCreateInfo
::flags
has VK_IMAGE_CREATE_DISJOINT_BIT
set and if the pCreateInfo
::tiling
is VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_OPTIMAL
, then planeAspect
must be a single valid format plane for the image (that is, for a two-plane image planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
, and for a three-plane image planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or VK_IMAGE_ASPECT_PLANE_2_BIT
)"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirements-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS
"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirements-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkImageCreateInfo structure"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirements-planeAspect-parameter",
"text": " If planeAspect
is not 0
, planeAspect
must be a valid VkImageAspectFlagBits value"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkDeviceImageMemoryRequirements-pCreateInfo-06776",
"text": " The pCreateInfo
::pNext
chain must not contain a VkImageDrmFormatModifierExplicitCreateInfoEXT structure"
},
{
"vuid": "VUID-VkDeviceImageMemoryRequirementsKHR-pCreateInfo-06420",
"text": " If pCreateInfo
::tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then planeAspect
must be a single valid memory plane for the image (that is, aspectMask
must specify a plane index that is less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with the image’s format
and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier
)"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)+(VK_ANDROID_external_memory_android_hardware_buffer)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-VkDeviceImageMemoryRequirements-pNext-06996",
"text": " Applications also must not call vkGetDeviceImageMemoryRequirements with a VkImageCreateInfo whose pNext
chain includes a VkExternalFormatANDROID structure with non-zero externalFormat
."
}
]
},
"VkImagePlaneMemoryRequirementsInfo": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
"text": " If the image’s tiling
is VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_OPTIMAL
, then planeAspect
must be a single valid format plane for the image (that is, for a two-plane image planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
, and for a three-plane image planeAspect
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or VK_IMAGE_ASPECT_PLANE_2_BIT
)"
},
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO
"
},
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
"text": " planeAspect
must be a valid VkImageAspectFlagBits value"
}
],
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
"text": " If the image’s tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then planeAspect
must be a single valid memory plane for the image (that is, aspectMask
must specify a plane index that is less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with the image’s format
and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier
)"
}
]
},
"VkMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkMemoryRequirements2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2
"
},
{
"vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkMemoryDedicatedRequirements"
},
{
"vuid": "VUID-VkMemoryRequirements2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"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-07459",
"text": " buffer
must not have been bound to 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 allocated with VkMemoryDedicatedAllocateInfo::buffer
equal to buffer
"
},
{
"vuid": "VUID-vkBindBufferMemory-memory-01508",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure 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 allocated 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 allocated with VkDedicatedAllocationMemoryAllocateInfoNV::buffer
equal to a buffer handle created with identical creation parameters to buffer
and memoryOffset
must be zero"
}
],
"(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindBufferMemory-buffer-01039",
"text": " If buffer
was not created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-vkBindBufferMemory-memory-02726",
"text": " If the value of VkExportMemoryAllocateInfo::handleTypes
used to allocate memory
is not 0
, it must include at least one of the handles set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkBindBufferMemory-memory-02727",
"text": " If memory
was allocated by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkBindBufferMemory-memory-02985",
"text": " If memory
was allocated by a memory import operation, that is not VkImportAndroidHardwareBufferInfoANDROID with a non-NULL
buffer
value, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
},
{
"vuid": "VUID-vkBindBufferMemory-memory-02986",
"text": " If memory
was allocated with the VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-NULL
buffer
value, VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
}
],
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339",
"text": " If the VkPhysicalDeviceBufferDeviceAddressFeatures::bufferDeviceAddress
feature is enabled and buffer
was created with the VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
bit set, memory
must have been allocated with the VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
bit set"
}
],
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkBindBufferMemory-buffer-06408",
"text": " If buffer
was created with VkBufferCollectionBufferCreateInfoFUCHSIA chained to VkBufferCreateInfo::pNext
, memory
must be allocated with a VkImportMemoryBufferCollectionFUCHSIA chained to VkMemoryAllocateInfo::pNext
"
}
]
},
"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-07459",
"text": " buffer
must not have been bound to a memory object"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01030",
"text": " buffer
must not have been created with any sparse memory binding flags"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01031",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-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-VkBindBufferMemoryInfo-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-VkBindBufferMemoryInfo-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-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-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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-01444",
"text": " If buffer
requires a dedicated allocation (as reported by vkGetBufferMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation
for buffer
), memory
must have been allocated with VkMemoryDedicatedAllocateInfo::buffer
equal to buffer
"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-01508",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure 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_VERSION_1_1)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-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-VkBindBufferMemoryInfo-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 allocated with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-01038",
"text": " If buffer
was created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must have been allocated with VkDedicatedAllocationMemoryAllocateInfoNV::buffer
equal to a buffer handle created with identical creation parameters 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-01039",
"text": " If buffer
was not created with VkDedicatedAllocationBufferCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-02726",
"text": " If the value of VkExportMemoryAllocateInfo::handleTypes
used to allocate memory
is not 0
, it must include at least one of the handles set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-02727",
"text": " If memory
was allocated by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-02985",
"text": " If memory
was allocated by a memory import operation, that is not VkImportAndroidHardwareBufferInfoANDROID with a non-NULL
buffer
value, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
},
{
"vuid": "VUID-VkBindBufferMemoryInfo-memory-02986",
"text": " If memory
was allocated with the VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-NULL
buffer
value, VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
when buffer
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339",
"text": " If the VkPhysicalDeviceBufferDeviceAddressFeatures::bufferDeviceAddress
feature is enabled and buffer
was created with the VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
bit set, memory
must have been allocated with the VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT
bit set"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBindBufferMemoryInfo-buffer-06408",
"text": " If buffer
was created with VkBufferCollectionBufferCreateInfoFUCHSIA chained to VkBufferCreateInfo::pNext
, memory
must be allocated with a VkImportMemoryBufferCollectionFUCHSIA chained to VkMemoryAllocateInfo::pNext
"
}
],
"(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 a VkBindBufferMemoryDeviceGroupInfo structure, 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": {
"core": [
{
"vuid": "VUID-vkBindImageMemory-image-07460",
"text": " image
must not have been bound to 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 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
"
},
{
"vuid": "VUID-vkBindImageMemory-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkBindImageMemory-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkBindImageMemory-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-vkBindImageMemory-image-parent",
"text": " image
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkBindImageMemory-memory-parent",
"text": " memory
must have been created, allocated, or retrieved from device
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindImageMemory-image-01445",
"text": " If image
requires a dedicated allocation (as reported by vkGetImageMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation
for image
), memory
must have been created with VkMemoryDedicatedAllocateInfo::image
equal to image
"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-vkBindImageMemory-memory-01509",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero"
}
],
"(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-vkBindImageMemory-memory-02628",
"text": " If the dedicatedAllocationImageAliasing
feature is not enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero"
},
{
"vuid": "VUID-vkBindImageMemory-memory-02629",
"text": " If the dedicatedAllocationImageAliasing
feature is enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then memoryOffset
must be zero, and image
must be either equal to VkMemoryDedicatedAllocateInfo::image
or an image that was created using the same parameters in VkImageCreateInfo, with the exception that extent
and arrayLayers
may differ subject to the following restrictions: every dimension in the extent
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and the arrayLayers
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkBindImageMemory-None-01901",
"text": " If image was created with the VK_IMAGE_CREATE_PROTECTED_BIT
bit set, the image must be bound to a memory object allocated with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
},
{
"vuid": "VUID-vkBindImageMemory-None-01902",
"text": " If image was created with the VK_IMAGE_CREATE_PROTECTED_BIT
bit not set, the image must not be bound to a memory object created with a memory type that reports VK_MEMORY_PROPERTY_PROTECTED_BIT
"
}
],
"(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-vkBindImageMemory-image-01050",
"text": " If image
was created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must have been created with VkDedicatedAllocationMemoryAllocateInfoNV::image
equal to an image handle created with identical creation parameters to image
and memoryOffset
must be zero"
}
],
"(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-vkBindImageMemory-image-01051",
"text": " If image
was not created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-vkBindImageMemory-memory-02728",
"text": " If the value of VkExportMemoryAllocateInfo::handleTypes
used to allocate memory
is not 0
, it must include at least one of the handles set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkBindImageMemory-memory-02729",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkBindImageMemory-memory-02989",
"text": " If memory
was created by a memory import operation, that is not VkImportAndroidHardwareBufferInfoANDROID with a non-NULL
buffer
value, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
},
{
"vuid": "VUID-vkBindImageMemory-memory-02990",
"text": " If memory
was created with the VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-NULL
buffer
value, VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
],
"(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"
}
],
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkBindImageMemory-image-06392",
"text": " If image
was created with VkBufferCollectionImageCreateInfoFUCHSIA chained to VkImageCreateInfo::pNext
, memory
must be allocated with a VkImportMemoryBufferCollectionFUCHSIA chained to VkMemoryAllocateInfo::pNext
"
}
]
},
"vkBindImageMemory2": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkBindImageMemory2-pBindInfos-02858",
"text": " If any VkBindImageMemoryInfo::image
was created with VK_IMAGE_CREATE_DISJOINT_BIT
then all planes of VkBindImageMemoryInfo::image
must be bound individually in separate pBindInfos
"
},
{
"vuid": "VUID-vkBindImageMemory2-pBindInfos-04006",
"text": " pBindInfos
must not refer to the same image subresource more than once"
}
],
"(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-07460",
"text": " image
must not have been bound to a memory object"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01045",
"text": " image
must not have been created with any sparse memory binding flags"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01046",
"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": " The sType
value of each struct 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 of non-ignored parameters 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-VkBindImageMemoryInfo-image-01445",
"text": " If image
requires a dedicated allocation (as reported by vkGetImageMemoryRequirements2 in VkMemoryDedicatedRequirements::requiresDedicatedAllocation
for image
), memory
must have been created with VkMemoryDedicatedAllocateInfo::image
equal to image
"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-01509",
"text": " If the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02628",
"text": " If the dedicatedAllocationImageAliasing
feature is not enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then image
must equal VkMemoryDedicatedAllocateInfo::image
and memoryOffset
must be zero"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02629",
"text": " If the dedicatedAllocationImageAliasing
feature is enabled, and the VkMemoryAllocateInfo
provided when memory
was allocated included a VkMemoryDedicatedAllocateInfo structure in its pNext
chain, and VkMemoryDedicatedAllocateInfo::image
was not VK_NULL_HANDLE, then memoryOffset
must be zero, and image
must be either equal to VkMemoryDedicatedAllocateInfo::image
or an image that was created using the same parameters in VkImageCreateInfo, with the exception that extent
and arrayLayers
may differ subject to the following restrictions: every dimension in the extent
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created; and the arrayLayers
parameter of the image being bound must be equal to or smaller than the original image for which the allocation was created"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-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-VkBindImageMemoryInfo-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_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-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_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-image-01051",
"text": " If image
was not created with VkDedicatedAllocationImageCreateInfoNV::dedicatedAllocation
equal to VK_TRUE
, memory
must not have been allocated dedicated for a specific buffer or image"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02728",
"text": " If the value of VkExportMemoryAllocateInfo::handleTypes
used to allocate memory
is not 0
, it must include at least one of the handles set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02729",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02989",
"text": " If memory
was created by a memory import operation, that is not VkImportAndroidHardwareBufferInfoANDROID with a non-NULL
buffer
value, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-memory-02990",
"text": " If memory
was created with the VkImportAndroidHardwareBufferInfoANDROID memory import operation with a non-NULL
buffer
value, VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
],
"(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 a 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 a 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 a 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 a 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 a 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 where VkBindImagePlaneMemoryInfo::planeAspect
corresponds to the VkImagePlaneMemoryRequirementsInfo::planeAspect
in the VkImageMemoryRequirementsInfo2 structure’s pNext
chain"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
"text": " If the pNext
chain includes a 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 where VkBindImagePlaneMemoryInfo::planeAspect
corresponds to the VkImagePlaneMemoryRequirementsInfo::planeAspect
in the VkImageMemoryRequirementsInfo2 structure’s pNext
chain"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
"text": " If the pNext
chain includes a 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 where VkBindImagePlaneMemoryInfo::planeAspect
corresponds to the VkImagePlaneMemoryRequirementsInfo::planeAspect
in the VkImageMemoryRequirementsInfo2 structure’s pNext
chain"
}
],
"(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 a VkBindImageMemoryDeviceGroupInfo structure, all instances of memory
specified by VkBindImageMemoryDeviceGroupInfo::pDeviceIndices
must have been allocated"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
"text": " If the pNext
chain includes a VkBindImageMemoryDeviceGroupInfo structure, 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 a VkBindImageMemoryDeviceGroupInfo structure, 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 a VkBindImageMemoryDeviceGroupInfo structure, 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 VkBindImageMemorySwapchainInfoKHR structure containing the same swapchain handle"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
"text": " If the pNext
chain includes a VkBindImageMemorySwapchainInfoKHR structure, memory
must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
"text": " If the pNext
chain does not include a VkBindImageMemorySwapchainInfoKHR structure, 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 height of the image subresource"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO
"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
"text": " If deviceIndexCount
is not 0
, pDeviceIndices
must be a valid pointer to an array of deviceIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
"text": " If splitInstanceBindRegionCount
is not 0
, pSplitInstanceBindRegions
must be a valid pointer to an array of splitInstanceBindRegionCount
VkRect2D structures"
}
]
},
"VkBindImageMemorySwapchainInfoKHR": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
"text": " imageIndex
must be less than the number of images in swapchain
"
},
{
"vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR
"
},
{
"vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR handle"
}
]
},
"VkBindImagePlaneMemoryInfo": {
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
"text": " If the image’s tiling
is VK_IMAGE_TILING_LINEAR
or VK_IMAGE_TILING_OPTIMAL
, then planeAspect
must be a single valid format plane for the image (that is, 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-VkBindImagePlaneMemoryInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO
"
},
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
"text": " planeAspect
must be a valid VkImageAspectFlagBits value"
}
],
"(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
"text": " If the image’s tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
, then planeAspect
must be a single valid memory plane for the image (that is, aspectMask
must specify a plane index that is less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount
associated with the image’s format
and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier
)"
}
]
},
"vkCreateBufferCollectionFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkCreateBufferCollectionFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateBufferCollectionFUCHSIA-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkBufferCollectionCreateInfoFUCHSIA structure"
},
{
"vuid": "VUID-vkCreateBufferCollectionFUCHSIA-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateBufferCollectionFUCHSIA-pCollection-parameter",
"text": " pCollection
must be a valid pointer to a VkBufferCollectionFUCHSIA handle"
}
]
},
"VkBufferCollectionCreateInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBufferCollectionCreateInfoFUCHSIA-collectionToken-06393",
"text": " collectionToken
must be a valid zx_handle_t
to a Zircon channel allocated from Sysmem (fuchsia.sysmem.Allocator
/AllocateSharedCollection) with ZX_DEFAULT_CHANNEL_RIGHTS
rights"
},
{
"vuid": "VUID-VkBufferCollectionCreateInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkBufferCollectionCreateInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkSetBufferCollectionImageConstraintsFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-collection-06394",
"text": " vkSetBufferCollectionImageConstraintsFUCHSIA
or vkSetBufferCollectionBufferConstraintsFUCHSIA
must not have already been called on collection
"
},
{
"vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
},
{
"vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-pImageConstraintsInfo-parameter",
"text": " pImageConstraintsInfo
must be a valid pointer to a valid VkImageConstraintsInfoFUCHSIA structure"
},
{
"vuid": "VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-collection-parent",
"text": " collection
must have been created, allocated, or retrieved from device
"
}
]
},
"VkImageConstraintsInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06395",
"text": " All elements of pFormatConstraints
must have at least one bit set in its VkImageFormatConstraintsInfoFUCHSIA::requiredFormatFeatures
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06396",
"text": " If pFormatConstraints
::imageCreateInfo
::usage
contains VK_IMAGE_USAGE_SAMPLED_BIT
, then pFormatConstraints
::requiredFormatFeatures
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06397",
"text": " If pFormatConstraints
::imageCreateInfo
::usage
contains VK_IMAGE_USAGE_STORAGE_BIT
, then pFormatConstraints
::requiredFormatFeatures
must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06398",
"text": " If pFormatConstraints
::imageCreateInfo
::usage
contains VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
, then pFormatConstraints
::requiredFormatFeatures
must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06399",
"text": " If pFormatConstraints
::imageCreateInfo
::usage
contains VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT
, then pFormatConstraints
::requiredFormatFeatures
must contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-06400",
"text": " If pFormatConstraints
::imageCreateInfo
::usage
contains VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
, then pFormatConstraints
::requiredFormatFeatures
must contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-pFormatConstraints-parameter",
"text": " pFormatConstraints
must be a valid pointer to an array of formatConstraintsCount
valid VkImageFormatConstraintsInfoFUCHSIA structures"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-bufferCollectionConstraints-parameter",
"text": " bufferCollectionConstraints
must be a valid VkBufferCollectionConstraintsInfoFUCHSIA structure"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-flags-parameter",
"text": " flags
must be a valid combination of VkImageConstraintsInfoFlagBitsFUCHSIA values"
},
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-formatConstraintsCount-arraylength",
"text": " formatConstraintsCount
must be greater than 0
"
}
],
"(VK_FUCHSIA_buffer_collection)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkImageConstraintsInfoFUCHSIA-attachmentFragmentShadingRate-06401",
"text": " If the attachmentFragmentShadingRate
feature is enabled, and pFormatConstraints
::imageCreateInfo
::usage
contains VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
, then pFormatConstraints
::requiredFormatFeatures
must contain VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
]
},
"VkImageFormatConstraintsInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-imageCreateInfo-parameter",
"text": " imageCreateInfo
must be a valid VkImageCreateInfo structure"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-requiredFormatFeatures-parameter",
"text": " requiredFormatFeatures
must be a valid combination of VkFormatFeatureFlagBits values"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-requiredFormatFeatures-requiredbitmask",
"text": " requiredFormatFeatures
must not be 0
"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-pColorSpaces-parameter",
"text": " pColorSpaces
must be a valid pointer to an array of colorSpaceCount
valid VkSysmemColorSpaceFUCHSIA structures"
},
{
"vuid": "VUID-VkImageFormatConstraintsInfoFUCHSIA-colorSpaceCount-arraylength",
"text": " colorSpaceCount
must be greater than 0
"
}
]
},
"VkBufferCollectionConstraintsInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBufferCollectionConstraintsInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkBufferCollectionConstraintsInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkSysmemColorSpaceFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkSysmemColorSpaceFUCHSIA-colorSpace-06402",
"text": " colorSpace
must be a ColorSpaceType
as defined in fuchsia.sysmem/image_formats.fidl
"
},
{
"vuid": "VUID-VkSysmemColorSpaceFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA
"
},
{
"vuid": "VUID-VkSysmemColorSpaceFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkSetBufferCollectionBufferConstraintsFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-collection-06403",
"text": " vkSetBufferCollectionImageConstraintsFUCHSIA
or vkSetBufferCollectionBufferConstraintsFUCHSIA
must not have already been called on collection
"
},
{
"vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
},
{
"vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-pBufferConstraintsInfo-parameter",
"text": " pBufferConstraintsInfo
must be a valid pointer to a valid VkBufferConstraintsInfoFUCHSIA structure"
},
{
"vuid": "VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-collection-parent",
"text": " collection
must have been created, allocated, or retrieved from device
"
}
]
},
"VkBufferConstraintsInfoFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-requiredFormatFeatures-06404",
"text": " The requiredFormatFeatures
bitmask of VkFormatFeatureFlagBits
must be chosen from among the buffer compatible format features listed in buffer compatible format features"
},
{
"vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-createInfo-parameter",
"text": " createInfo
must be a valid VkBufferCreateInfo structure"
},
{
"vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-requiredFormatFeatures-parameter",
"text": " requiredFormatFeatures
must be a valid combination of VkFormatFeatureFlagBits values"
},
{
"vuid": "VUID-VkBufferConstraintsInfoFUCHSIA-bufferCollectionConstraints-parameter",
"text": " bufferCollectionConstraints
must be a valid VkBufferCollectionConstraintsInfoFUCHSIA structure"
}
]
},
"vkGetBufferCollectionPropertiesFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-None-06405",
"text": " Prior to calling vkGetBufferCollectionPropertiesFUCHSIA, the constraints on the buffer collection must have been set by either vkSetBufferCollectionImageConstraintsFUCHSIA or vkSetBufferCollectionBufferConstraintsFUCHSIA."
},
{
"vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
},
{
"vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-pProperties-parameter",
"text": " pProperties
must be a valid pointer to a VkBufferCollectionPropertiesFUCHSIA structure"
},
{
"vuid": "VUID-vkGetBufferCollectionPropertiesFUCHSIA-collection-parent",
"text": " collection
must have been created, allocated, or retrieved from device
"
}
]
},
"VkBufferCollectionPropertiesFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA
"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-formatFeatures-parameter",
"text": " formatFeatures
must be a valid combination of VkFormatFeatureFlagBits values"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-formatFeatures-requiredbitmask",
"text": " formatFeatures
must not be 0
"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-sysmemColorSpaceIndex-parameter",
"text": " sysmemColorSpaceIndex
must be a valid VkSysmemColorSpaceFUCHSIA structure"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-samplerYcbcrConversionComponents-parameter",
"text": " samplerYcbcrConversionComponents
must be a valid VkComponentMapping structure"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-suggestedYcbcrModel-parameter",
"text": " suggestedYcbcrModel
must be a valid VkSamplerYcbcrModelConversion value"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-suggestedYcbcrRange-parameter",
"text": " suggestedYcbcrRange
must be a valid VkSamplerYcbcrRange value"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-suggestedXChromaOffset-parameter",
"text": " suggestedXChromaOffset
must be a valid VkChromaLocation value"
},
{
"vuid": "VUID-VkBufferCollectionPropertiesFUCHSIA-suggestedYChromaOffset-parameter",
"text": " suggestedYChromaOffset
must be a valid VkChromaLocation value"
}
]
},
"VkImportMemoryBufferCollectionFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-VkImportMemoryBufferCollectionFUCHSIA-index-06406",
"text": " index
must be less than the value retrieved as VkBufferCollectionPropertiesFUCHSIA:bufferCount"
},
{
"vuid": "VUID-VkImportMemoryBufferCollectionFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA
"
},
{
"vuid": "VUID-VkImportMemoryBufferCollectionFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
}
]
},
"vkDestroyBufferCollectionFUCHSIA": {
"(VK_FUCHSIA_buffer_collection)": [
{
"vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-collection-06407",
"text": " VkImage and VkBuffer objects that referenced collection
upon creation by inclusion of a VkBufferCollectionImageCreateInfoFUCHSIA or VkBufferCollectionBufferCreateInfoFUCHSIA chained to their VkImageCreateInfo or VkBufferCreateInfo structures respectively, may outlive collection
."
},
{
"vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-collection-parameter",
"text": " collection
must be a valid VkBufferCollectionFUCHSIA handle"
},
{
"vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyBufferCollectionFUCHSIA-collection-parent",
"text": " collection
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateSampler": {
"core": [
{
"vuid": "VUID-vkCreateSampler-maxSamplerAllocationCount-04110",
"text": " There must be less than VkPhysicalDeviceLimits::maxSamplerAllocationCount
VkSampler objects currently created on the device"
},
{
"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 samplerAnisotropy
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 samplerMirrorClampToEdge
is not enabled, and 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 VkSamplerBorderColorComponentMappingCreateInfoEXT, VkSamplerCustomBorderColorCreateInfoEXT, VkSamplerReductionModeCreateInfo, or VkSamplerYcbcrConversionInfo"
},
{
"vuid": "VUID-VkSamplerCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkSamplerCreateFlagBits values"
},
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
"text": " magFilter
must be a valid VkFilter value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
"text": " minFilter
must be a valid VkFilter value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
"text": " mipmapMode
must be a valid VkSamplerMipmapMode value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
"text": " addressModeU
must be a valid VkSamplerAddressMode value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
"text": " addressModeV
must be a valid VkSamplerAddressMode value"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
"text": " addressModeW
must be a valid VkSamplerAddressMode value"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkSamplerCreateInfo-samplerMipLodBias-04467",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::samplerMipLodBias
is VK_FALSE
, mipLodBias
must be zero"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
"text": " If sampler {YCbCr} conversion is enabled and the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT
, minFilter
and magFilter
must be equal to the sampler {YCbCr} conversion’s chromaFilter
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
"text": " If sampler {YCbCr} 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_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerCreateInfo-None-01647",
"text": " if sampler {YCbCr} conversion is enabled and the pNext
chain includes a VkSamplerReductionModeCreateInfo structure, then the sampler reduction mode must be set to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
"
}
],
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-VkSamplerCreateInfo-pNext-06726",
"text": " If samplerFilterMinmax
is not enabled and the pNext
chain includes a VkSamplerReductionModeCreateInfo structure, then the sampler reduction mode must be set to VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
"text": " If either magFilter
or minFilter
is VK_FILTER_CUBIC_EXT
, anisotropyEnable
must be VK_FALSE
"
}
],
"(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
"text": " If either magFilter
or minFilter
is VK_FILTER_CUBIC_EXT
, the reductionMode
member of VkSamplerReductionModeCreateInfo must be VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
"
}
],
"(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
"text": " If compareEnable
is VK_TRUE
, the reductionMode
member of VkSamplerReductionModeCreateInfo must be VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02574",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then minFilter
and magFilter
must be equal"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02575",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then mipmapMode
must be VK_SAMPLER_MIPMAP_MODE_NEAREST
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02576",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then minLod
and maxLod
must be zero"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02577",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then addressModeU
and addressModeV
must each be either VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
or VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02578",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then anisotropyEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02579",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then compareEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-02580",
"text": " If flags
includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
, then unnormalizedCoordinates
must be VK_FALSE
"
}
],
"(VK_EXT_non_seamless_cube_map)": [
{
"vuid": "VUID-VkSamplerCreateInfo-nonSeamlessCubeMap-06788",
"text": " If the nonSeamlessCubeMap
feature is not enabled, flags
must not include VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT
"
}
],
"(VK_EXT_custom_border_color)": [
{
"vuid": "VUID-VkSamplerCreateInfo-borderColor-04011",
"text": " If borderColor
is one of VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
or VK_BORDER_COLOR_INT_CUSTOM_EXT
, then a VkSamplerCustomBorderColorCreateInfoEXT must be included in the pNext
chain"
},
{
"vuid": "VUID-VkSamplerCreateInfo-customBorderColors-04085",
"text": " If the customBorderColors
feature is not enabled, borderColor
must not be VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
or VK_BORDER_COLOR_INT_CUSTOM_EXT
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-borderColor-04442",
"text": " If borderColor
is one of VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
or VK_BORDER_COLOR_INT_CUSTOM_EXT
, and VkSamplerCustomBorderColorCreateInfoEXT::format
is not VK_FORMAT_UNDEFINED
, VkSamplerCustomBorderColorCreateInfoEXT::customBorderColor
must be within the range of values representable in format
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-None-04012",
"text": " The maximum number of samplers with custom border colors which can be simultaneously created on a device is implementation-dependent and specified by the maxCustomBorderColorSamplers
member of the VkPhysicalDeviceCustomBorderColorPropertiesEXT structure"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06964",
"text": " If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, then minFilter
and magFilter
must be VK_FILTER_NEAREST
."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06965",
"text": " If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, then mipmapMode
must be VK_SAMPLER_MIPMAP_MODE_NEAREST
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06966",
"text": " [If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, then minLod
and maxLod
must be zero"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06967",
"text": " If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, then addressModeU
and addressModeV
must each be either VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
or VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06968",
"text": " If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, and if addressModeU
or addressModeV
is VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER
, then borderColor
must be VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK
."
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06969",
"text": " If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, then anisotropyEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerCreateInfo-flags-06970",
"text": " If flags
includes VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
, then compareEnable
must be VK_FALSE
"
}
]
},
"VkSamplerReductionModeCreateInfo": {
"(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkSamplerReductionModeCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO
"
},
{
"vuid": "VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter",
"text": " reductionMode
must be a valid VkSamplerReductionMode 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 samplerYcbcrConversion
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-04060",
"text": " format
must represent unsigned normalized values (i.e. the format must be a UNORM
format)"
}
],
"(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
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04061",
"text": " If an external format conversion is not being created, format
must represent unsigned normalized values (i.e. the format must be a UNORM
format)"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
"text": " The potential format features of the sampler {YCbCr} conversion 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 potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT
, xChromaOffset
and yChromaOffset
must not be VK_CHROMA_LOCATION_COSITED_EVEN
if the corresponding components are downsampled"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
"text": " If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT
, xChromaOffset
and yChromaOffset
must not be VK_CHROMA_LOCATION_MIDPOINT
if the corresponding components are downsampled"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
"text": " If the format has a _422
or _420
suffix, then components.g
must be the identity swizzle"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
"text": " If the format has a _422
or _420
suffix, then components.a
must be the identity swizzle, VK_COMPONENT_SWIZZLE_ONE
, or VK_COMPONENT_SWIZZLE_ZERO
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
"text": " If the format has a _422
or _420
suffix, then components.r
must be the identity swizzle or VK_COMPONENT_SWIZZLE_B
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
"text": " If the format has a _422
or _420
suffix, then components.b
must be the identity swizzle or VK_COMPONENT_SWIZZLE_R
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
"text": " If the format has a _422
or _420
suffix, and if either components.r
or components.b
is the identity swizzle, both values must be the identity swizzle"
},
{
"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 components 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 component containing zero or one as a consequence of conversion to RGBA"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748",
"text": " If ycbcrRange
is VK_SAMPLER_YCBCR_RANGE_ITU_NARROW
then the R, G and B components obtained by applying the component
swizzle to format
must each have a bit-depth greater than or equal to 8"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
"text": " If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT
forceExplicitReconstruction
must be VK_FALSE
"
},
{
"vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
"text": " If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT
, chromaFilter
must not be VK_FILTER_LINEAR
"
},
{
"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-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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
"
}
]
},
"VkSamplerCustomBorderColorCreateInfoEXT": {
"(VK_EXT_custom_border_color)": [
{
"vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-07605",
"text": " If format
is not VK_FORMAT_UNDEFINED
and format
is not a combined depth stencil format then the VkSamplerCreateInfo::borderColor
type must match the sampled type of the provided format
, as shown in the SPIR-V Sampled Type column of the Interpretation of Numeric Format table"
},
{
"vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014",
"text": " If the customBorderColorWithoutFormat
feature is not enabled then format
must not be VK_FORMAT_UNDEFINED
"
},
{
"vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015",
"text": " If the sampler is used to sample an image view of VK_FORMAT_B4G4R4A4_UNORM_PACK16
, VK_FORMAT_B5G6R5_UNORM_PACK16
, or VK_FORMAT_B5G5R5A1_UNORM_PACK16
format then format
must not be VK_FORMAT_UNDEFINED
"
},
{
"vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter",
"text": " format
must be a valid VkFormat value"
}
]
},
"VkSamplerBorderColorComponentMappingCreateInfoEXT": {
"(VK_EXT_border_color_swizzle)": [
{
"vuid": "VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-borderColorSwizzle-06437",
"text": " The borderColorSwizzle
feature must be enabled."
},
{
"vuid": "VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkSamplerBorderColorComponentMappingCreateInfoEXT-components-parameter",
"text": " components
must be a valid VkComponentMapping structure"
}
]
},
"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": " 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 VkDescriptorSetLayoutBindingFlagsCreateInfo or VkMutableDescriptorTypeCreateInfoEXT"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkDescriptorSetLayoutCreateFlagBits values"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
"text": " If bindingCount
is not 0
, pBindings
must be a valid pointer to an array of bindingCount
valid VkDescriptorSetLayoutBinding structures"
}
],
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all elements of pBindings
must not have a descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then the total number of elements of all bindings must be less than or equal to VkPhysicalDevicePushDescriptorPropertiesKHR::maxPushDescriptors
"
}
],
"(VK_KHR_push_descriptor)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, then all elements of pBindings
must not have a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
"
}
],
"(VK_KHR_push_descriptor)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04590",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, flags
must not contain VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04591",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
, pBindings
must not have a descriptorType
of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
"text": " If any binding has the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
bit set, flags
must include VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
"text": " If any binding has the VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
bit set, then all bindings must not have descriptorType
of VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04592",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
, flags
must not contain VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-07303",
"text": " If any element pBindings
[i] has a descriptorType
of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, then a VkMutableDescriptorTypeCreateInfoEXT must be present in the pNext
chain, and mutableDescriptorTypeListCount
must be greater than i."
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-04594",
"text": " If a binding has a descriptorType
value of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, then pImmutableSamplers
must be NULL
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-mutableDescriptorType-04595",
"text": " If VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorType
is not enabled, pBindings
must not contain a descriptorType
of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-04596",
"text": " If flags
contains VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorType
must be enabled"
}
]
},
"VkMutableDescriptorTypeCreateInfoEXT": {
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkMutableDescriptorTypeCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkMutableDescriptorTypeCreateInfoEXT-pMutableDescriptorTypeLists-parameter",
"text": " If mutableDescriptorTypeListCount
is not 0
, pMutableDescriptorTypeLists
must be a valid pointer to an array of mutableDescriptorTypeListCount
valid VkMutableDescriptorTypeListEXT structures"
}
]
},
"VkMutableDescriptorTypeListEXT": {
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-descriptorTypeCount-04597",
"text": " descriptorTypeCount
must not be 0
if the corresponding binding is of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
},
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04598",
"text": " pDescriptorTypes
must be a valid pointer to an array of descriptorTypeCount
valid, unique VkDescriptorType values if the given binding is of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
type"
},
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-descriptorTypeCount-04599",
"text": " descriptorTypeCount
must be 0
if the corresponding binding is not of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
},
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04600",
"text": " pDescriptorTypes
must not contain VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
},
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04601",
"text": " pDescriptorTypes
must not contain VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
},
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04602",
"text": " pDescriptorTypes
must not contain VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
"
},
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-parameter",
"text": " If descriptorTypeCount
is not 0
, pDescriptorTypes
must be a valid pointer to an array of descriptorTypeCount
valid VkDescriptorType values"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkMutableDescriptorTypeListEXT-pDescriptorTypes-04603",
"text": " pDescriptorTypes
must not contain VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
"
}
]
},
"VkDescriptorSetLayoutBinding": {
"core": [
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLER
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and descriptorCount
is not 0
and pImmutableSamplers
is not NULL
, pImmutableSamplers
must be a valid pointer to an array of descriptorCount
valid VkSampler
handles"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
"text": " If descriptorCount
is not 0
, stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
and descriptorCount
is not 0
, then stageFlags
must be 0
or VK_SHADER_STAGE_FRAGMENT_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
}
],
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-04604",
"text": " If the inlineUniformBlock
feature is not enabled, descriptorType
must not be VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
then descriptorCount
must be a multiple of 4
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
then descriptorCount
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxInlineUniformBlockSize
"
}
],
"(VK_EXT_custom_border_color)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009",
"text": " The sampler objects indicated by pImmutableSamplers
must not have a borderColor
with one of the values VK_BORDER_COLOR_FLOAT_CUSTOM_EXT
or VK_BORDER_COLOR_INT_CUSTOM_EXT
"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-04605",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, then pImmutableSamplers
must be NULL
"
}
]
},
"VkDescriptorSetLayoutBindingFlagsCreateInfo": {
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002",
"text": " If bindingCount
is not zero, bindingCount
must equal VkDescriptorSetLayoutCreateInfo::bindingCount
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004",
"text": " If an element of pBindingFlags
includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
, then all other elements of VkDescriptorSetLayoutCreateInfo::pBindings
must have a smaller value of binding
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingUniformBufferUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::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
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingStorageImageUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingStorageBufferUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_STORAGE_BUFFER
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::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
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::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
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-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
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingUpdateUnusedWhilePending
is not enabled, all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingPartiallyBound
is not enabled, all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014",
"text": " If VkPhysicalDeviceDescriptorIndexingFeatures::descriptorBindingVariableDescriptorCount
is not enabled, all elements of pBindingFlags
must not include VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015",
"text": " If an element of pBindingFlags
includes VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
, that element’s descriptorType
must not be VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC
or VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter",
"text": " If bindingCount
is not 0
, pBindingFlags
must be a valid pointer to an array of bindingCount
valid combinations of VkDescriptorBindingFlagBits values"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-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
, VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
, or VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
"text": " If VkPhysicalDeviceInlineUniformBlockFeatures::descriptorBindingInlineUniformBlockUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingAccelerationStructureUpdateAfterBind-03570",
"text": " If VkPhysicalDeviceAccelerationStructureFeaturesKHR::descriptorBindingAccelerationStructureUpdateAfterBind
is not enabled, all bindings with descriptor type VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
or VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
must not use VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT
"
}
]
},
"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 VkDescriptorSetVariableDescriptorCountLayoutSupport"
},
{
"vuid": "VUID-VkDescriptorSetLayoutSupport-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkDescriptorSetVariableDescriptorCountLayoutSupport": {
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupport-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT
"
}
]
},
"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-parameter",
"text": " flags
must be a valid combination of VkPipelineLayoutCreateFlagBits values"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
"text": " If setLayoutCount
is not 0
, pSetLayouts
must be a valid pointer to an array of setLayoutCount
valid or VK_NULL_HANDLE 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_VERSION_1_2,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-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_VERSION_1_2,VK_EXT_descriptor_indexing)+!(VK_QCOM_image_processing)": [
{
"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
"
}
],
"!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-06938",
"text": " The total number of descriptors of the type VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
, VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
, and VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
, accessible to any shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorSampledImages
"
}
],
"!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxPerStageDescriptorInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxDescriptorSetInlineUniformBlocks
"
}
],
"!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_VERSION_1_3)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-06531",
"text": " The total number of descriptors with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceVulkan13Properties
::maxInlineUniformTotalSize
"
}
],
"(VK_VERSION_1_2,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
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
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
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-03020",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
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
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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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
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
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
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
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
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
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
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
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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::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 VkPhysicalDeviceDescriptorIndexingProperties
::maxDescriptorSetUpdateAfterBindInputAttachments
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+!(VK_QCOM_image_processing)": [
{
"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
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
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-06939",
"text": " The total number of descriptors in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
, VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
, and VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceLimits
::maxPerStageDescriptorSampledImages
"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
"text": " The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxPerStageDescriptorInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
"text": " The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxDescriptorSetInlineUniformBlocks
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceInlineUniformBlockProperties
::maxDescriptorSetUpdateAfterBindInlineUniformBlocks
"
}
],
"(VK_KHR_push_descriptor)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
"text": " pSetLayouts
must not contain more than one descriptor set layout that was created with VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
set"
}
],
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03571",
"text": " The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPerStageDescriptorAccelerationStructures
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03572",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible to any given shader stage across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPerStageDescriptorUpdateAfterBindAccelerationStructures
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03573",
"text": " The total number of bindings in descriptor set layouts created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
bit set with a descriptorType
of VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxDescriptorSetAccelerationStructures
"
},
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03574",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxDescriptorSetUpdateAfterBindAccelerationStructures
"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
"text": " The total number of bindings with a descriptorType
of VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
accessible across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxDescriptorSetAccelerationStructures
"
}
],
"(VK_EXT_fragment_density_map2)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566",
"text": " The total number of pImmutableSamplers
created with flags
containing VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT
or VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT
across all shader stages and across all elements of pSetLayouts
must be less than or equal to VkPhysicalDeviceFragmentDensityMap2PropertiesEXT
::maxDescriptorSetSubsampledSamplers
"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-04606",
"text": " Any element of pSetLayouts
must not have been created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
bit set"
}
],
"!(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-06561",
"text": " Elements of pSetLayouts
must be valid VkDescriptorSetLayout objects"
}
],
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPipelineLayoutCreateInfo-graphicsPipelineLibrary-06753",
"text": " If graphicsPipelineLibrary
is not enabled, elements of pSetLayouts
must be valid VkDescriptorSetLayout objects"
}
]
},
"VkPushConstantRange": {
"core": [
{
"vuid": "VUID-VkPushConstantRange-offset-00294",
"text": " offset
must be less than VkPhysicalDeviceLimits
::maxPushConstantsSize
"
},
{
"vuid": "VUID-VkPushConstantRange-offset-00295",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-VkPushConstantRange-size-00296",
"text": " size
must be greater than 0
"
},
{
"vuid": "VUID-VkPushConstantRange-size-00297",
"text": " size
must be a multiple of 4
"
},
{
"vuid": "VUID-VkPushConstantRange-size-00298",
"text": " size
must be less than or equal to VkPhysicalDeviceLimits
::maxPushConstantsSize
minus offset
"
},
{
"vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
"text": " stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
"text": " stageFlags
must not be 0
"
}
]
},
"vkDestroyPipelineLayout": {
"core": [
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
"text": " If VkAllocationCallbacks
were provided when pipelineLayout
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
"text": " If no VkAllocationCallbacks
were provided when pipelineLayout
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
"text": " pipelineLayout
must not have been passed to any vkCmd*
command for any command buffers that are still in the recording state when vkDestroyPipelineLayout
is called"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
"text": " If pipelineLayout
is not VK_NULL_HANDLE, pipelineLayout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
"text": " If pipelineLayout
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateDescriptorPool": {
"core": [
{
"vuid": "VUID-vkCreateDescriptorPool-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDescriptorPoolCreateInfo structure"
},
{
"vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
"text": " pDescriptorPool
must be a valid pointer to a VkDescriptorPool handle"
}
]
},
"VkDescriptorPoolCreateInfo": {
"core": [
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
"text": " maxSets
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
"text": " 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 VkDescriptorPoolInlineUniformBlockCreateInfo or VkMutableDescriptorTypeCreateInfoEXT"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkDescriptorPoolCreateFlagBits values"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
"text": " If poolSizeCount
is not 0
, pPoolSizes
must be a valid pointer to an array of poolSizeCount
valid VkDescriptorPoolSize structures"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-flags-04607",
"text": " If flags
has the VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT
bit set, then the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
bit must not be set"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-mutableDescriptorType-04608",
"text": " If VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorType
is not enabled, pPoolSizes
must not contain a descriptorType
of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-flags-04609",
"text": " If flags
has the VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT
bit set, VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT::mutableDescriptorType
must be enabled"
},
{
"vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-04787",
"text": " If pPoolSizes
contains a descriptorType
of VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, any other VK_DESCRIPTOR_TYPE_MUTABLE_EXT
element in pPoolSizes
must not have sets of supported descriptor types which partially overlap"
}
]
},
"VkDescriptorPoolInlineUniformBlockCreateInfo": {
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO
"
}
]
},
"VkDescriptorPoolSize": {
"core": [
{
"vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
"text": " descriptorCount
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorPoolSize-type-parameter",
"text": " type
must be a valid VkDescriptorType value"
}
],
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorPoolSize-type-02218",
"text": " If type
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
then descriptorCount
must be a multiple of 4
"
}
]
},
"vkDestroyDescriptorPool": {
"core": [
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
"text": " All submitted commands that refer to descriptorPool
(via any allocated descriptor sets) must have completed execution"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
"text": " If VkAllocationCallbacks
were provided when descriptorPool
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
"text": " If no VkAllocationCallbacks
were provided when descriptorPool
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
"text": " If descriptorPool
is not VK_NULL_HANDLE, descriptorPool
must be a valid VkDescriptorPool handle"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
"text": " If descriptorPool
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkAllocateDescriptorSets": {
"core": [
{
"vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
"text": " pAllocateInfo
must be a valid pointer to a valid VkDescriptorSetAllocateInfo structure"
},
{
"vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
"text": " pDescriptorSets
must be a valid pointer to an array of pAllocateInfo->descriptorSetCount
VkDescriptorSet handles"
},
{
"vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength",
"text": " pAllocateInfo->descriptorSetCount
must be greater than 0
"
}
]
},
"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_VERSION_1_2,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
bit set, descriptorPool
must have been created with the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
flag set"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-04610",
"text": " If any element of pSetLayouts
was created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
bit set, descriptorPool
must have been created with the VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_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 VkDescriptorSetVariableDescriptorCountAllocateInfo"
},
{
"vuid": "VUID-VkDescriptorSetAllocateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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"
}
]
},
"VkDescriptorSetVariableDescriptorCountAllocateInfo": {
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045",
"text": " If descriptorSetCount
is not zero, descriptorSetCount
must equal VkDescriptorSetAllocateInfo::descriptorSetCount
"
},
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046",
"text": " If VkDescriptorSetAllocateInfo::pSetLayouts
[i] has a variable-sized descriptor 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-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO
"
},
{
"vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-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-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": {
"core": [
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06236",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, elements of the pTexelBufferView
member of pDescriptorWrites
[i] must have been created on device
"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06237",
"text": " For each element i where pDescriptorWrites
[i].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
, the buffer
member of any element of the pBufferInfo
member of pDescriptorWrites
[i] must have been created on device
"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06238",
"text": " For each element i where pDescriptorWrites
[i].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 any element of the pImageInfo
member of pDescriptorWrites
[i] must have been created on device
"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06239",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
the imageView
member of any element of pDescriptorWrites
[i] must have been created on device
"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06493",
"text": " For each element i where pDescriptorWrites
[i].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
, pDescriptorWrites
[i].pImageInfo
must be a valid pointer to an array of pDescriptorWrites
[i].descriptorCount
valid VkDescriptorImageInfo
structures"
},
{
"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"
}
],
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06240",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
, elements of the pAccelerationStructures
member of a VkWriteDescriptorSetAccelerationStructureKHR structure in the pNext
chain of pDescriptorWrites
[i] must have been created on device
"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06241",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
, elements of the pAccelerationStructures
member of a VkWriteDescriptorSetAccelerationStructureNV structure in the pNext
chain of pDescriptorWrites
[i] must have been created on device
"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06940",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
or VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
, the imageView
member of any element of pDescriptorWrites
[i] must have been created on device
"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06941",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
or VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
, pDescriptorWrites
[i].pImageInfo
must be a valid pointer to an array of pDescriptorWrites
[i].descriptorCount
valid VkDescriptorImageInfo
structures"
}
],
"!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
"text": " The dstSet
member of each element of pDescriptorWrites
or pDescriptorCopies
must not be used by any command that was recorded to a command buffer which is in the pending state"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06992",
"text": " Host access to pDescriptorWrites
[i].dstSet
and pDescriptorCopies
[i].dstSet
must be externally synchronized"
}
],
"(VK_VERSION_1_2,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
or VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT
bits set must not be used by any command that was recorded to a command buffer which is in the pending state"
},
{
"vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-06993",
"text": " Host access to pDescriptorWrites
[i].dstSet
and pDescriptorCopies
[i].dstSet
must be externally synchronized unless explicitly denoted otherwise for specific flags"
}
]
},
"VkWriteDescriptorSet": {
"core": [
{
"vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
"text": " dstBinding
must be less than or equal to the maximum value of binding
of all VkDescriptorSetLayoutBinding structures specified when dstSet
’s descriptor set layout was created"
},
{
"vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
"text": " dstBinding
must be a binding with a non-zero descriptorCount
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
"text": " All consecutive bindings updated via a single VkWriteDescriptorSet
structure, except those with a descriptorCount
of zero, must have identical descriptorType
and stageFlags
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
"text": " All consecutive bindings updated via a single VkWriteDescriptorSet
structure, except those with a descriptorCount
of zero, must all either use immutable samplers or must all not use immutable samplers"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
"text": " descriptorType
must match the type of dstBinding
within dstSet
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
"text": " dstSet
must be a valid VkDescriptorSet handle"
},
{
"vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
"text": " The sum of dstArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding specified by dstBinding
, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02994",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
, each element of pTexelBufferView
must be either a valid VkBufferView
handle or VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02995",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
or VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
and the nullDescriptor
feature is not enabled, each element of pTexelBufferView
must not be VK_NULL_HANDLE"
},
{
"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-02996",
"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
member of each element of pImageInfo
must be either a valid VkImageView
handle or VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02997",
"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
and the nullDescriptor
feature is not enabled, the imageView
member of each element of pImageInfo
must not be VK_NULL_HANDLE"
},
{
"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-04149",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
the imageLayout
member of each element of pImageInfo
must be a member of the list given in Sampled Image"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-04150",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
the imageLayout
member of each element of pImageInfo
must be a member of the list given in Combined Image Sampler"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-04151",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
the imageLayout
member of each element of pImageInfo
must be a member of the list given in Input Attachment"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-04152",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
the imageLayout
member of each element of pImageInfo
must be a member of the list given in Storage Image"
},
{
"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-descriptorType-02752",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLER
, then dstSet
must not have been allocated with a layout that included immutable samplers for dstBinding
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkWriteDescriptorSetAccelerationStructureKHR, VkWriteDescriptorSetAccelerationStructureNV, or VkWriteDescriptorSetInlineUniformBlock"
},
{
"vuid": "VUID-VkWriteDescriptorSet-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
"text": " descriptorCount
must be greater than 0
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-commonparent",
"text": " Both of dstSet
, and the elements of pTexelBufferView
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, dstArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, descriptorCount
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, the pNext
chain must include a VkWriteDescriptorSetInlineUniformBlock structure whose dataSize
member equals descriptorCount
"
}
],
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR
, the pNext
chain must include a VkWriteDescriptorSetAccelerationStructureKHR structure whose accelerationStructureCount
member equals descriptorCount
"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-03817",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV
, the pNext
chain must include a VkWriteDescriptorSetAccelerationStructureNV structure whose accelerationStructureCount
member equals descriptorCount
"
}
],
"(VK_VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, then the imageView
member of each pImageInfo
element must have been created without a VkSamplerYcbcrConversionInfo
structure in its pNext
chain"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and if any element of pImageInfo
has a imageView
member that was created with a VkSamplerYcbcrConversionInfo
structure in its pNext
chain, then dstSet
must have been allocated with a layout that included immutable samplers for dstBinding
, and the corresponding immutable sampler must have been created with an identically defined VkSamplerYcbcrConversionInfo
object"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, and dstSet
was allocated with a layout that included immutable samplers for dstBinding
, then the imageView
member of each element of pImageInfo
which corresponds to an immutable sampler that enables sampler {YCbCr} conversion must have been created with a VkSamplerYcbcrConversionInfo
structure in its pNext
chain with an identically defined VkSamplerYcbcrConversionInfo
to the corresponding immutable sampler"
}
],
"(VK_EXT_image_2d_view_of_3d)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-06710",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
, each imageView
member of each element of pImageInfo
that is a 2D image view created from a 3D image must have been created from an image created with VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT
set"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkWriteDescriptorSet-dstSet-04611",
"text": " If the VkDescriptorSetLayoutBinding
for dstSet
at dstBinding
is VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, the new active descriptor type descriptorType
must exist in the corresponding pMutableDescriptorTypeLists
list for dstBinding
"
}
],
"(VK_EXT_image_view_min_lod)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-06450",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, the imageView
member of each element of pImageInfo
must have either been created without a VkImageViewMinLodCreateInfoEXT present in the pNext
chain or with a VkImageViewMinLodCreateInfoEXT::minLod
of 0.0
"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-06942",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM
, the imageView
member of each element of pImageInfo
must have been created with a view created with an image
created with VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM
"
},
{
"vuid": "VUID-VkWriteDescriptorSet-descriptorType-06943",
"text": " If descriptorType
is VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM
, the imageView
member of each element of pImageInfo
must have been created with a view created with an image
created with VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM
"
}
]
},
"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-02998",
"text": " If the nullDescriptor
feature is not enabled, buffer
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
"text": " If buffer
is not VK_NULL_HANDLE, buffer
must be a valid VkBuffer handle"
}
],
"(VK_EXT_robustness2)": [
{
"vuid": "VUID-VkDescriptorBufferInfo-buffer-02999",
"text": " If buffer
is VK_NULL_HANDLE, offset
must be zero and range
must be VK_WHOLE_SIZE
"
}
]
},
"VkDescriptorImageInfo": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)+!(VK_EXT_image_2d_view_of_3d)": [
{
"vuid": "VUID-VkDescriptorImageInfo-imageView-06711",
"text": " imageView
must not be 2D image view created from a 3D image"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkDescriptorImageInfo-imageView-06712",
"text": " imageView
must not be a 2D array image view created from a 3D image"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)+(VK_EXT_image_2d_view_of_3d)": [
{
"vuid": "VUID-VkDescriptorImageInfo-descriptorType-06713",
"text": " If the image2DViewOf3D
feature is not enabled and descriptorType
is VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
then imageView
must not be a 2D view created from a 3D image"
},
{
"vuid": "VUID-VkDescriptorImageInfo-descriptorType-06714",
"text": " If the sampler2DViewOf3D
feature is not enabled and descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
or VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER
then imageView
must not be a 2D view created from a 3D image"
}
],
"core": [
{
"vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
"text": " If imageView
is created from a depth/stencil image, the aspectMask
used to create the imageView
must include either VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
but not both"
},
{
"vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
"text": " imageLayout
must match the actual VkImageLayout of each subresource accessible from imageView
at the time this descriptor is accessed as defined by the image layout matching rules"
},
{
"vuid": "VUID-VkDescriptorImageInfo-commonparent",
"text": " Both of imageView
, and sampler
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
"text": " If sampler
is used and the VkFormat of the image is a multi-planar format, the image must have been created with VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, and the aspectMask
of the imageView
must be VK_IMAGE_ASPECT_PLANE_0_BIT
, VK_IMAGE_ASPECT_PLANE_1_BIT
or (for three-plane formats only) VK_IMAGE_ASPECT_PLANE_2_BIT
"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::mutableComparisonSamplers
is VK_FALSE
, then sampler
must have been created with VkSamplerCreateInfo::compareEnable
set to VK_FALSE
"
}
]
},
"VkWriteDescriptorSetInlineUniformBlock": {
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-dataSize-02222",
"text": " dataSize
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK
"
},
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-VkWriteDescriptorSetInlineUniformBlock-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
}
]
},
"VkWriteDescriptorSetAccelerationStructureKHR": {
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236",
"text": " accelerationStructureCount
must be equal to descriptorCount
in the extended structure"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579",
"text": " Each acceleration structure in pAccelerationStructures
must have been created with a type
of VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580",
"text": " If the nullDescriptor
feature is not enabled, each element of pAccelerationStructures
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR
"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid or VK_NULL_HANDLE VkAccelerationStructureKHR handles"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
}
]
},
"VkWriteDescriptorSetAccelerationStructureNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747",
"text": " accelerationStructureCount
must be equal to descriptorCount
in the extended structure"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748",
"text": " Each acceleration structure in pAccelerationStructures
must have been created with VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749",
"text": " If the nullDescriptor
feature is not enabled, each member of pAccelerationStructures
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV
"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid or VK_NULL_HANDLE VkAccelerationStructureNV handles"
},
{
"vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
}
]
},
"VkCopyDescriptorSet": {
"core": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
"text": " srcBinding
must be a valid binding within srcSet
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
"text": " The sum of srcArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding specified by srcBinding
, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
"text": " dstBinding
must be a valid binding within dstSet
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
"text": " The sum of dstArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding specified by dstBinding
, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
"text": " The type of dstBinding
within dstSet
must be equal to the type of srcBinding
within srcSet
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
"text": " If srcSet
is equal to dstSet
, then the source and destination ranges of descriptors must not overlap, where the ranges may include array elements from consecutive bindings as described by consecutive binding updates"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-02753",
"text": " If the descriptor type of the descriptor set binding specified by dstBinding
is VK_DESCRIPTOR_TYPE_SAMPLER
, then dstSet
must not have been allocated with a layout that included immutable samplers for dstBinding
"
},
{
"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_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
"text": " If the descriptor type of the descriptor set binding specified by srcBinding
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, srcArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
"text": " If the descriptor type of the descriptor set binding specified by dstBinding
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, dstArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
"text": " If the descriptor type of the descriptor set binding specified by either srcBinding
or dstBinding
is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, descriptorCount
must be an integer multiple of 4
"
}
],
"(VK_VERSION_1_2,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
flag set, then dstSet
’s layout must also have been created with the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
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
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
flag set"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-04885",
"text": " If srcSet
’s layout was created with neither VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
nor VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT
flags set, then dstSet
’s layout must have been created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
flag set"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-04887",
"text": " If the descriptor pool from which srcSet
was allocated was created with neither VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
nor VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT
flags set, then the descriptor pool from which dstSet
was allocated must have been created without the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
flag set"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+!(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-04886",
"text": " If srcSet
’s layout was created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
flag set, then dstSet
’s layout must also have been created without the VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT
flag set"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-04888",
"text": " If the descriptor pool from which srcSet
was allocated was created without the VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT
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
flag set"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkCopyDescriptorSet-dstSet-04612",
"text": " If VkDescriptorSetLayoutBinding
for dstSet
at dstBinding
is VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, the new active descriptor type must exist in the corresponding pMutableDescriptorTypeLists
list for dstBinding
if the new active descriptor type is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-srcSet-04613",
"text": " If VkDescriptorSetLayoutBinding
for srcSet
at srcBinding
is VK_DESCRIPTOR_TYPE_MUTABLE_EXT
and the VkDescriptorSetLayoutBinding
for dstSet
at dstBinding
is not VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, the active descriptor type for the source descriptor must match the descriptor type of dstBinding
"
},
{
"vuid": "VUID-VkCopyDescriptorSet-dstSet-04614",
"text": " If VkDescriptorSetLayoutBinding
for dstSet
at dstBinding
is VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, and the new active descriptor type is VK_DESCRIPTOR_TYPE_MUTABLE_EXT
, the pMutableDescriptorTypeLists
for srcBinding
and dstBinding
must match exactly"
}
]
},
"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-descriptorUpdateEntryCount-arraylength",
"text": " descriptorUpdateEntryCount
must be greater than 0
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
"text": " Both of descriptorSetLayout
, and pipelineLayout
that are valid handles of non-ignored parameters 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
"
}
],
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-04615",
"text": " If templateType
is VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET
, descriptorSetLayout
must not contain a binding with type VK_DESCRIPTOR_TYPE_MUTABLE_EXT
"
}
]
},
"VkDescriptorUpdateTemplateEntry": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
"text": " dstBinding
must be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
"text": " dstArrayElement
and descriptorCount
must be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by consecutive binding updates"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
"text": " descriptorType
must be a valid VkDescriptorType value"
}
],
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
"text": " If descriptor
type is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, dstArrayElement
must be an integer multiple of 4
"
},
{
"vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
"text": " If descriptor
type is VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK
, descriptorCount
must be an integer multiple of 4
"
}
]
},
"vkDestroyDescriptorUpdateTemplate": {
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
"text": " If VkAllocationCallbacks
were provided when descriptorUpdateTemplate
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
"text": " If no VkAllocationCallbacks
were provided when descriptorUpdateTemplate
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 containing 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
"
}
],
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-06994",
"text": " Host access to descriptorSet
must be externally synchronized"
}
],
"(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-06995",
"text": " Host access to descriptorSet
must be externally synchronized unless explicitly denoted otherwise for specific flags"
}
]
},
"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 and the range of the binding must be less than or equal to the size of the buffer"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-06715",
"text": " For each dynamic uniform or storage buffer binding in pDescriptorSets
, if the range was set with VK_WHOLE_SIZE
then pDynamicOffsets
which corresponds to the descriptor binding must be 0"
},
{
"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 or VK_NULL_HANDLE VkDescriptorSet handles"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
"text": " If dynamicOffsetCount
is not 0
, pDynamicOffsets
must be a valid pointer to an array of dynamicOffsetCount
uint32_t
values"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBindDescriptorSets-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-04616",
"text": " Each element of pDescriptorSets
must not have been allocated from a VkDescriptorPool
with the VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT
flag set"
}
],
"!(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-06563",
"text": " Each element of pDescriptorSets
must be a valid VkDescriptorSet"
}
],
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-vkCmdBindDescriptorSets-graphicsPipelineLibrary-06754",
"text": " If graphicsPipelineLibrary
is not enabled, each element of pDescriptorSets
must be a valid VkDescriptorSet"
}
]
},
"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-pDescriptorWrites-06494",
"text": " For each element i where pDescriptorWrites
[i].descriptorType
is VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
, pDescriptorWrites
[i].pImageInfo
must be a valid pointer to an array of pDescriptorWrites
[i].descriptorCount
valid VkDescriptorImageInfo
structures"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
"text": " pDescriptorWrites
must be a valid pointer to an array of descriptorWriteCount
valid VkWriteDescriptorSet structures"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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 containing one or more valid instances of VkDescriptorImageInfo, VkDescriptorBufferInfo, or VkBufferView in a layout defined by descriptorUpdateTemplate
when it was created with vkCreateDescriptorUpdateTemplate"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07304",
"text": " set
must be less than VkPipelineLayoutCreateInfo::setLayoutCount
provided when layout
was created"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-set-07305",
"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-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
"text": " descriptorUpdateTemplate
must be a valid VkDescriptorUpdateTemplate handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
"text": " Each of commandBuffer
, descriptorUpdateTemplate
, and layout
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdPushConstants": {
"core": [
{
"vuid": "VUID-vkCmdPushConstants-offset-01795",
"text": " For each byte in the range specified by offset
and size
and for each shader stage in stageFlags
, there must be a push constant range in layout
that includes that byte and that stage"
},
{
"vuid": "VUID-vkCmdPushConstants-offset-01796",
"text": " For each byte in the range specified by offset
and size
and for each push constant range that overlaps that byte, stageFlags
must include all stages in that push constant range’s VkPushConstantRange::stageFlags
"
},
{
"vuid": "VUID-vkCmdPushConstants-offset-00368",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdPushConstants-size-00369",
"text": " size
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdPushConstants-offset-00370",
"text": " offset
must be less than VkPhysicalDeviceLimits
::maxPushConstantsSize
"
},
{
"vuid": "VUID-vkCmdPushConstants-size-00371",
"text": " size
must be less than or equal to VkPhysicalDeviceLimits
::maxPushConstantsSize
minus offset
"
},
{
"vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdPushConstants-layout-parameter",
"text": " layout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
"text": " stageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
"text": " stageFlags
must not be 0
"
},
{
"vuid": "VUID-vkCmdPushConstants-pValues-parameter",
"text": " pValues
must be a valid pointer to an array of size
bytes"
},
{
"vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPushConstants-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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"
}
]
},
"vkGetBufferDeviceAddress": {
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324",
"text": " The bufferDeviceAddress
or VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
::bufferDeviceAddress
feature must be enabled"
},
{
"vuid": "VUID-vkGetBufferDeviceAddress-device-03325",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
or VkPhysicalDeviceBufferDeviceAddressFeaturesEXT
::bufferDeviceAddressMultiDevice
feature must be enabled"
}
],
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+!(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-vkGetBufferDeviceAddress-None-06542",
"text": " The bufferDeviceAddress
feature must be enabled"
},
{
"vuid": "VUID-vkGetBufferDeviceAddress-device-06543",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
feature must be enabled"
}
],
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-vkGetBufferDeviceAddress-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetBufferDeviceAddress-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkBufferDeviceAddressInfo structure"
}
]
},
"VkBufferDeviceAddressInfo": {
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02600",
"text": " If buffer
is non-sparse and was not created with the VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT
flag, then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02601",
"text": " buffer
must have been created with VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT
"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO
"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBufferDeviceAddressInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
}
]
},
"vkGetBufferOpaqueCaptureAddress": {
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-vkGetBufferOpaqueCaptureAddress-None-03326",
"text": " The bufferDeviceAddress
feature must be enabled"
},
{
"vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-03327",
"text": " If device
was created with multiple physical devices, then the bufferDeviceAddressMultiDevice
feature must be enabled"
},
{
"vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkBufferDeviceAddressInfo structure"
}
]
},
"BaryCoordKHR": {
"(VK_NV_fragment_shader_barycentric,VK_KHR_fragment_shader_barycentric)": [
{
"vuid": "VUID-BaryCoordKHR-BaryCoordKHR-04154",
"text": " The BaryCoordKHR
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordKHR-BaryCoordKHR-04155",
"text": " The variable decorated with BaryCoordKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordKHR-BaryCoordKHR-04156",
"text": " The variable decorated with BaryCoordKHR
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordNoPerspAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04157",
"text": " The BaryCoordNoPerspAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04158",
"text": " The variable decorated with BaryCoordNoPerspAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04159",
"text": " The variable decorated with BaryCoordNoPerspAMD
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordNoPerspKHR": {
"(VK_NV_fragment_shader_barycentric,VK_KHR_fragment_shader_barycentric)": [
{
"vuid": "VUID-BaryCoordNoPerspKHR-BaryCoordNoPerspKHR-04160",
"text": " The BaryCoordNoPerspKHR
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordNoPerspKHR-BaryCoordNoPerspKHR-04161",
"text": " The variable decorated with BaryCoordNoPerspKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordNoPerspKHR-BaryCoordNoPerspKHR-04162",
"text": " The variable decorated with BaryCoordNoPerspKHR
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordNoPerspCentroidAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04163",
"text": " The BaryCoordNoPerspCentroidAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04164",
"text": " The variable decorated with BaryCoordNoPerspCentroidAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04165",
"text": " The variable decorated with BaryCoordNoPerspCentroidAMD
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordNoPerspSampleAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04166",
"text": " The BaryCoordNoPerspSampleAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04167",
"text": " The variable decorated with BaryCoordNoPerspSampleAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04168",
"text": " The variable decorated with BaryCoordNoPerspSampleAMD
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordPullModelAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04169",
"text": " The BaryCoordPullModelAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04170",
"text": " The variable decorated with BaryCoordPullModelAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04171",
"text": " The variable decorated with BaryCoordPullModelAMD
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordSmoothAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04172",
"text": " The BaryCoordSmoothAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04173",
"text": " The variable decorated with BaryCoordSmoothAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04174",
"text": " The variable decorated with BaryCoordSmoothAMD
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordSmoothCentroidAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04175",
"text": " The BaryCoordSmoothCentroidAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04176",
"text": " The variable decorated with BaryCoordSmoothCentroidAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04177",
"text": " The variable decorated with BaryCoordSmoothCentroidAMD
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"BaryCoordSmoothSampleAMD": {
"(VK_AMD_shader_explicit_vertex_parameter)": [
{
"vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04178",
"text": " The BaryCoordSmoothSampleAMD
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04179",
"text": " The variable decorated with BaryCoordSmoothSampleAMD
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04180",
"text": " The variable decorated with BaryCoordSmoothSampleAMD
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"BaseInstance": {
"(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [
{
"vuid": "VUID-BaseInstance-BaseInstance-04181",
"text": " The BaseInstance
decoration must be used only within the Vertex
{ExecutionModel}"
},
{
"vuid": "VUID-BaseInstance-BaseInstance-04182",
"text": " The variable decorated with BaseInstance
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaseInstance-BaseInstance-04183",
"text": " The variable decorated with BaseInstance
must be declared as a scalar 32-bit integer value"
}
]
},
"BaseVertex": {
"(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [
{
"vuid": "VUID-BaseVertex-BaseVertex-04184",
"text": " The BaseVertex
decoration must be used only within the Vertex
{ExecutionModel}"
},
{
"vuid": "VUID-BaseVertex-BaseVertex-04185",
"text": " The variable decorated with BaseVertex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-BaseVertex-BaseVertex-04186",
"text": " The variable decorated with BaseVertex
must be declared as a scalar 32-bit integer value"
}
]
},
"ClipDistance": {
"core": [
{
"vuid": "VUID-ClipDistance-ClipDistance-04187",
"text": " The ClipDistance
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, Fragment
, TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-ClipDistance-ClipDistance-04188",
"text": " The variable decorated with ClipDistance
within the MeshEXT
, MeshNV
, or Vertex
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-ClipDistance-ClipDistance-04189",
"text": " The variable decorated with ClipDistance
within the Fragment
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ClipDistance-ClipDistance-04190",
"text": " The variable decorated with ClipDistance
within the TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel} must not be declared in a {StorageClass} other than Input
or Output
"
},
{
"vuid": "VUID-ClipDistance-ClipDistance-04191",
"text": " The variable decorated with ClipDistance
must be declared as an array of 32-bit floating-point values"
}
]
},
"ClipDistancePerViewNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04192",
"text": " The ClipDistancePerViewNV
decoration must be used only within the MeshNV
{ExecutionModel}"
},
{
"vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04193",
"text": " The variable decorated with ClipDistancePerViewNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04194",
"text": " The variable decorated with ClipDistancePerViewNV
must also be decorated with the PerViewNV
decoration"
},
{
"vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04195",
"text": " The variable decorated with ClipDistancePerViewNV
must be declared as a two-dimensional array of 32-bit floating-point values"
}
]
},
"CullDistance": {
"core": [
{
"vuid": "VUID-CullDistance-CullDistance-04196",
"text": " The CullDistance
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, Fragment
, TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-CullDistance-CullDistance-04197",
"text": " The variable decorated with CullDistance
within the MeshEXT
, MeshNV
or Vertex
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-CullDistance-CullDistance-04198",
"text": " The variable decorated with CullDistance
within the Fragment
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-CullDistance-CullDistance-04199",
"text": " The variable decorated with CullDistance
within the TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel} must not be declared using a {StorageClass} other than Input
or Output
"
},
{
"vuid": "VUID-CullDistance-CullDistance-04200",
"text": " The variable decorated with CullDistance
must be declared as an array of 32-bit floating-point values"
}
]
},
"CullDistancePerViewNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04201",
"text": " The CullDistancePerViewNV
decoration must be used only within the MeshNV
{ExecutionModel}"
},
{
"vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04202",
"text": " The variable decorated with CullDistancePerViewNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04203",
"text": " The variable decorated with CullDistancePerViewNV
must also be decorated with the PerViewNV
decoration"
},
{
"vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04204",
"text": " The variable decorated with CullDistancePerViewNV
must be declared as a two-dimensional array of 32-bit floating-point values"
}
]
},
"CullPrimitiveEXT": {
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07034",
"text": " The CullPrimitiveEXT
decoration must be used only within the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07035",
"text": " The variable decorated with CullPrimitiveEXT
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07036",
"text": " The variable decorated with CullPrimitiveEXT
must be declared as an array of boolean values"
},
{
"vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07037",
"text": " The size of the array decorated with CullPrimitiveEXT
must match the value specified by OutputPrimitivesEXT
"
},
{
"vuid": "VUID-CullPrimitiveEXT-CullPrimitiveEXT-07038",
"text": " The variable decorated with CullPrimitiveEXT
within the MeshEXT
{ExecutionModel} must also be decorated with the PerPrimitiveEXT
decoration"
}
]
},
"CullMaskKHR": {
"(VK_KHR_ray_tracing_pipeline,VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-CullMaskKHR-CullMaskKHR-06735",
"text": " The CullMaskKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-CullMaskKHR-CullMaskKHR-06736",
"text": " The variable decorated with CullMaskKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-CullMaskKHR-CullMaskKHR-06737",
"text": " The variable decorated with CullMaskKHR
must be declared as a scalar 32-bit integer value"
}
]
},
"CurrentRayTimeNV": {
"(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-CurrentRayTimeNV-CurrentRayTimeNV-04942",
"text": " The CurrentRayTimeNV
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-CurrentRayTimeNV-CurrentRayTimeNV-04943",
"text": " The variable decorated with CurrentRayTimeNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-CurrentRayTimeNV-CurrentRayTimeNV-04944",
"text": " The variable decorated with CurrentRayTimeNV
must be declared as a scalar 32-bit floating-point value"
}
]
},
"DeviceIndex": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-DeviceIndex-DeviceIndex-04205",
"text": " The variable decorated with DeviceIndex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-DeviceIndex-DeviceIndex-04206",
"text": " The variable decorated with DeviceIndex
must be declared as a scalar 32-bit integer value"
}
]
},
"DrawIndex": {
"(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [
{
"vuid": "VUID-DrawIndex-DrawIndex-04207",
"text": " The DrawIndex
decoration must be used only within the Vertex
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-DrawIndex-DrawIndex-04208",
"text": " The variable decorated with DrawIndex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-DrawIndex-DrawIndex-04209",
"text": " The variable decorated with DrawIndex
must be declared as a scalar 32-bit integer value"
}
]
},
"FragCoord": {
"core": [
{
"vuid": "VUID-FragCoord-FragCoord-04210",
"text": " The FragCoord
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FragCoord-FragCoord-04211",
"text": " The variable decorated with FragCoord
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-FragCoord-FragCoord-04212",
"text": " The variable decorated with FragCoord
must be declared as a four-component vector of 32-bit floating-point values"
}
]
},
"FragDepth": {
"core": [
{
"vuid": "VUID-FragDepth-FragDepth-04213",
"text": " The FragDepth
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FragDepth-FragDepth-04214",
"text": " The variable decorated with FragDepth
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-FragDepth-FragDepth-04215",
"text": " The variable decorated with FragDepth
must be declared as a scalar 32-bit floating-point value"
},
{
"vuid": "VUID-FragDepth-FragDepth-04216",
"text": " If the shader dynamically writes to the variable decorated with FragDepth
, the DepthReplacing
{ExecutionMode} must be declared"
}
]
},
"FragInvocationCountEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04217",
"text": " The FragInvocationCountEXT
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04218",
"text": " The variable decorated with FragInvocationCountEXT
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04219",
"text": " The variable decorated with FragInvocationCountEXT
must be declared as a scalar 32-bit integer value"
}
]
},
"FragSizeEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-FragSizeEXT-FragSizeEXT-04220",
"text": " The FragSizeEXT
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FragSizeEXT-FragSizeEXT-04221",
"text": " The variable decorated with FragSizeEXT
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-FragSizeEXT-FragSizeEXT-04222",
"text": " The variable decorated with FragSizeEXT
must be declared as a two-component vector of 32-bit integer values"
}
]
},
"FragStencilRefEXT": {
"(VK_EXT_shader_stencil_export)": [
{
"vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04223",
"text": " The FragStencilRefEXT
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04224",
"text": " The variable decorated with FragStencilRefEXT
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04225",
"text": " The variable decorated with FragStencilRefEXT
must be declared as a scalar integer value"
}
]
},
"FragmentSizeNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04226",
"text": " The FragmentSizeNV
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04227",
"text": " The variable decorated with FragmentSizeNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04228",
"text": " The variable decorated with FragmentSizeNV
must be declared as a two-component vector of 32-bit integer values"
}
]
},
"FrontFacing": {
"core": [
{
"vuid": "VUID-FrontFacing-FrontFacing-04229",
"text": " The FrontFacing
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FrontFacing-FrontFacing-04230",
"text": " The variable decorated with FrontFacing
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-FrontFacing-FrontFacing-04231",
"text": " The variable decorated with FrontFacing
must be declared as a boolean value"
}
]
},
"FullyCoveredEXT": {
"(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04232",
"text": " The FullyCoveredEXT
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04233",
"text": " The variable decorated with FullyCoveredEXT
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04234",
"text": " The variable decorated with FullyCoveredEXT
must be declared as a boolean value"
}
],
"(VK_EXT_conservative_rasterization)+(VK_EXT_post_depth_coverage)": [
{
"vuid": "VUID-FullyCoveredEXT-conservativeRasterizationPostDepthCoverage-04235",
"text": " If VkPhysicalDeviceConservativeRasterizationPropertiesEXT
::conservativeRasterizationPostDepthCoverage
is not supported the PostDepthCoverage
{ExecutionMode} must not be declared, when a variable with the FullyCoveredEXT
decoration is declared"
}
]
},
"GlobalInvocationId": {
"core": [
{
"vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04236",
"text": " The GlobalInvocationId
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04237",
"text": " The variable decorated with GlobalInvocationId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04238",
"text": " The variable decorated with GlobalInvocationId
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"HelperInvocation": {
"core": [
{
"vuid": "VUID-HelperInvocation-HelperInvocation-04239",
"text": " The HelperInvocation
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-HelperInvocation-HelperInvocation-04240",
"text": " The variable decorated with HelperInvocation
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-HelperInvocation-HelperInvocation-04241",
"text": " The variable decorated with HelperInvocation
must be declared as a boolean value"
}
]
},
"HitKindKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-HitKindKHR-HitKindKHR-04242",
"text": " The HitKindKHR
decoration must be used only within the AnyHitKHR
or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-HitKindKHR-HitKindKHR-04243",
"text": " The variable decorated with HitKindKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-HitKindKHR-HitKindKHR-04244",
"text": " The variable decorated with HitKindKHR
must be declared as a scalar 32-bit integer value"
}
]
},
"HitTNV": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-HitTNV-HitTNV-04245",
"text": " The HitTNV
decoration must be used only within the AnyHitNV
or ClosestHitNV
{ExecutionModel}"
},
{
"vuid": "VUID-HitTNV-HitTNV-04246",
"text": " The variable decorated with HitTNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-HitTNV-HitTNV-04247",
"text": " The variable decorated with HitTNV
must be declared as a scalar 32-bit floating-point value"
}
]
},
"IncomingRayFlagsKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04248",
"text": " The IncomingRayFlagsKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04249",
"text": " The variable decorated with IncomingRayFlagsKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04250",
"text": " The variable decorated with IncomingRayFlagsKHR
must be declared as a scalar 32-bit integer value"
}
]
},
"InstanceCustomIndexKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04251",
"text": " The InstanceCustomIndexKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04252",
"text": " The variable decorated with InstanceCustomIndexKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04253",
"text": " The variable decorated with InstanceCustomIndexKHR
must be declared as a scalar 32-bit integer value"
}
]
},
"InstanceId": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-InstanceId-InstanceId-04254",
"text": " The InstanceId
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-InstanceId-InstanceId-04255",
"text": " The variable decorated with InstanceId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-InstanceId-InstanceId-04256",
"text": " The variable decorated with InstanceId
must be declared as a scalar 32-bit integer value"
}
]
},
"InvocationId": {
"core": [
{
"vuid": "VUID-InvocationId-InvocationId-04257",
"text": " The InvocationId
decoration must be used only within the TessellationControl
or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-InvocationId-InvocationId-04258",
"text": " The variable decorated with InvocationId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-InvocationId-InvocationId-04259",
"text": " The variable decorated with InvocationId
must be declared as a scalar 32-bit integer value"
}
]
},
"InvocationsPerPixelNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04260",
"text": " The InvocationsPerPixelNV
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04261",
"text": " The variable decorated with InvocationsPerPixelNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04262",
"text": " The variable decorated with InvocationsPerPixelNV
must be declared as a scalar 32-bit integer value"
}
]
},
"InstanceIndex": {
"core": [
{
"vuid": "VUID-InstanceIndex-InstanceIndex-04263",
"text": " The InstanceIndex
decoration must be used only within the Vertex
{ExecutionModel}"
},
{
"vuid": "VUID-InstanceIndex-InstanceIndex-04264",
"text": " The variable decorated with InstanceIndex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-InstanceIndex-InstanceIndex-04265",
"text": " The variable decorated with InstanceIndex
must be declared as a scalar 32-bit integer value"
}
]
},
"LaunchIdKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-LaunchIdKHR-LaunchIdKHR-04266",
"text": " The LaunchIdKHR
decoration must be used only within the RayGenerationKHR
, IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, MissKHR
, or CallableKHR
{ExecutionModel}"
},
{
"vuid": "VUID-LaunchIdKHR-LaunchIdKHR-04267",
"text": " The variable decorated with LaunchIdKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-LaunchIdKHR-LaunchIdKHR-04268",
"text": " The variable decorated with LaunchIdKHR
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"LaunchSizeKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04269",
"text": " The LaunchSizeKHR
decoration must be used only within the RayGenerationKHR
, IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, MissKHR
, or CallableKHR
{ExecutionModel}"
},
{
"vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04270",
"text": " The variable decorated with LaunchSizeKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04271",
"text": " The variable decorated with LaunchSizeKHR
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"Layer": {
"core": [
{
"vuid": "VUID-Layer-Layer-04272",
"text": " The Layer
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, TessellationEvaluation
, Geometry
, or Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-Layer-Layer-04274",
"text": " The variable decorated with Layer
within the MeshEXT
, MeshNV
, Vertex
, TessellationEvaluation
, or Geometry
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-Layer-Layer-04275",
"text": " The variable decorated with Layer
within the Fragment
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-Layer-Layer-04276",
"text": " The variable decorated with Layer
must be declared as a scalar 32-bit integer value"
},
{
"vuid": "VUID-Layer-Layer-07039",
"text": " The variable decorated with Layer
within the MeshEXT
{ExecutionModel} must also be decorated with the PerPrimitiveEXT
decoration"
}
],
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-Layer-Layer-04273",
"text": " If the shaderOutputLayer
feature is not enabled then the Layer
decoration must be used only within the Geometry
or Fragment
{ExecutionModel}"
}
]
},
"LayerPerViewNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04277",
"text": " The LayerPerViewNV
decoration must be used only within the MeshNV
{ExecutionModel}"
},
{
"vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04278",
"text": " The variable decorated with LayerPerViewNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04279",
"text": " The variable decorated with LayerPerViewNV
must also be decorated with the PerViewNV
decoration"
},
{
"vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04280",
"text": " The variable decorated with LayerPerViewNV
must be declared as an array of scalar 32-bit integer values"
}
]
},
"LocalInvocationId": {
"core": [
{
"vuid": "VUID-LocalInvocationId-LocalInvocationId-04281",
"text": " The LocalInvocationId
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-LocalInvocationId-LocalInvocationId-04282",
"text": " The variable decorated with LocalInvocationId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-LocalInvocationId-LocalInvocationId-04283",
"text": " The variable decorated with LocalInvocationId
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"LocalInvocationIndex": {
"core": [
{
"vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04284",
"text": " The LocalInvocationIndex
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04285",
"text": " The variable decorated with LocalInvocationIndex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04286",
"text": " The variable decorated with LocalInvocationIndex
must be declared as a scalar 32-bit integer value"
}
]
},
"MeshViewCountNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04287",
"text": " The MeshViewCountNV
decoration must be used only within the MeshNV
or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04288",
"text": " The variable decorated with MeshViewCountNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04289",
"text": " The variable decorated with MeshViewCountNV
must be declared as a scalar 32-bit integer value"
}
]
},
"MeshViewIndicesNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04290",
"text": " The MeshViewIndicesNV
decoration must be used only within the MeshNV
or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04291",
"text": " The variable decorated with MeshViewIndicesNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04292",
"text": " The variable decorated with MeshViewIndicesNV
must be declared as an array of scalar 32-bit integer values"
}
]
},
"NumSubgroups": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-NumSubgroups-NumSubgroups-04293",
"text": " The NumSubgroups
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-NumSubgroups-NumSubgroups-04294",
"text": " The variable decorated with NumSubgroups
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-NumSubgroups-NumSubgroups-04295",
"text": " The variable decorated with NumSubgroups
must be declared as a scalar 32-bit integer value"
}
]
},
"NumWorkgroups": {
"core": [
{
"vuid": "VUID-NumWorkgroups-NumWorkgroups-04296",
"text": " The NumWorkgroups
decoration must be used only within the GLCompute
, MeshEXT
, or TaskEXT
{ExecutionModel}"
},
{
"vuid": "VUID-NumWorkgroups-NumWorkgroups-04297",
"text": " The variable decorated with NumWorkgroups
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-NumWorkgroups-NumWorkgroups-04298",
"text": " The variable decorated with NumWorkgroups
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"ObjectRayDirectionKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04299",
"text": " The ObjectRayDirectionKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04300",
"text": " The variable decorated with ObjectRayDirectionKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04301",
"text": " The variable decorated with ObjectRayDirectionKHR
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"ObjectRayOriginKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04302",
"text": " The ObjectRayOriginKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04303",
"text": " The variable decorated with ObjectRayOriginKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04304",
"text": " The variable decorated with ObjectRayOriginKHR
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"ObjectToWorldKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04305",
"text": " The ObjectToWorldKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04306",
"text": " The variable decorated with ObjectToWorldKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04307",
"text": " The variable decorated with ObjectToWorldKHR
must be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values"
}
]
},
"PatchVertices": {
"core": [
{
"vuid": "VUID-PatchVertices-PatchVertices-04308",
"text": " The PatchVertices
decoration must be used only within the TessellationControl
or TessellationEvaluation
{ExecutionModel}"
},
{
"vuid": "VUID-PatchVertices-PatchVertices-04309",
"text": " The variable decorated with PatchVertices
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-PatchVertices-PatchVertices-04310",
"text": " The variable decorated with PatchVertices
must be declared as a scalar 32-bit integer value"
}
]
},
"PointCoord": {
"core": [
{
"vuid": "VUID-PointCoord-PointCoord-04311",
"text": " The PointCoord
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-PointCoord-PointCoord-04312",
"text": " The variable decorated with PointCoord
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-PointCoord-PointCoord-04313",
"text": " The variable decorated with PointCoord
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"PointSize": {
"core": [
{
"vuid": "VUID-PointSize-PointSize-04314",
"text": " The PointSize
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-PointSize-PointSize-04315",
"text": " The variable decorated with PointSize
within the MeshEXT
, MeshNV
, or Vertex
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PointSize-PointSize-04316",
"text": " The variable decorated with PointSize
within the TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel} must not be declared using a {StorageClass} other than Input
or Output
"
},
{
"vuid": "VUID-PointSize-PointSize-04317",
"text": " The variable decorated with PointSize
must be declared as a scalar 32-bit floating-point value"
}
]
},
"Position": {
"core": [
{
"vuid": "VUID-Position-Position-04318",
"text": " The Position
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-Position-Position-04319",
"text": " The variable decorated with Position
within the MeshEXT
, MeshNV
, or Vertex
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-Position-Position-04320",
"text": " The variable decorated with Position
within the TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel} must not be declared using a {StorageClass} other than Input
or Output
"
},
{
"vuid": "VUID-Position-Position-04321",
"text": " The variable decorated with Position
must be declared as a four-component vector of 32-bit floating-point values"
}
]
},
"PositionPerViewNV": {
"(VK_NVX_multiview_per_view_attributes)": [
{
"vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04322",
"text": " The PositionPerViewNV
decoration must be used only within the MeshNV
, Vertex
, TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04323",
"text": " The variable decorated with PositionPerViewNV
within the Vertex
, or MeshNV
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04324",
"text": " The variable decorated with PositionPerViewNV
within the TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel} must not be declared using a {StorageClass} other than Input
or Output
"
},
{
"vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04325",
"text": " The variable decorated with PositionPerViewNV
must be declared as an array of four-component vector of 32-bit floating-point values with at least as many elements as the maximum view in the subpass’s view mask plus one"
},
{
"vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04326",
"text": " The array variable decorated with PositionPerViewNV
must only be indexed by a constant or specialization constant"
}
]
},
"PrimitiveCountNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04327",
"text": " The PrimitiveCountNV
decoration must be used only within the MeshNV
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04328",
"text": " The variable decorated with PrimitiveCountNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04329",
"text": " The variable decorated with PrimitiveCountNV
must be declared as a scalar 32-bit integer value"
}
]
},
"PrimitiveId": {
"core": [
{
"vuid": "VUID-PrimitiveId-PrimitiveId-04330",
"text": " The PrimitiveId
decoration must be used only within the MeshEXT
, MeshNV
, IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, TessellationControl
, TessellationEvaluation
, Geometry
, or Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitiveId-Fragment-04331",
"text": " If pipeline contains both the Fragment
and Geometry
{ExecutionModel} and a variable decorated with PrimitiveId
is read from Fragment
shader, then the Geometry
shader must write to the output variables decorated with PrimitiveId
in all execution paths"
},
{
"vuid": "VUID-PrimitiveId-Fragment-04332",
"text": " If pipeline contains both the Fragment
and MeshEXT
or MeshNV
{ExecutionModel} and a variable decorated with PrimitiveId
is read from Fragment
shader, then the MeshEXT
or MeshNV
shader must write to the output variables decorated with PrimitiveId
in all execution paths"
},
{
"vuid": "VUID-PrimitiveId-Fragment-04333",
"text": " If Fragment
{ExecutionModel} contains a variable decorated with PrimitiveId
, then either the MeshShadingEXT
, MeshShadingNV
, Geometry
or Tessellation
capability must also be declared"
},
{
"vuid": "VUID-PrimitiveId-PrimitiveId-04334",
"text": " The variable decorated with PrimitiveId
within the TessellationControl
, TessellationEvaluation
, Fragment
, IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveId-PrimitiveId-04335",
"text": " The variable decorated with PrimitiveId
within the Geometry
{ExecutionModel} must be declared using the Input
or Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveId-PrimitiveId-04336",
"text": " The variable decorated with PrimitiveId
within the MeshEXT
or MeshNV
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveId-PrimitiveId-04337",
"text": " The variable decorated with PrimitiveId
must be declared as a scalar 32-bit integer value"
},
{
"vuid": "VUID-PrimitiveId-PrimitiveId-07040",
"text": " The variable decorated with PrimitiveId
within the MeshEXT
{ExecutionModel} must also be decorated with the PerPrimitiveEXT
decoration"
}
]
},
"PrimitiveIndicesNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04338",
"text": " The PrimitiveIndicesNV
decoration must be used only within the MeshNV
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04339",
"text": " The variable decorated with PrimitiveIndicesNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04340",
"text": " The variable decorated with PrimitiveIndicesNV
must be declared as an array of scalar 32-bit integer values"
},
{
"vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04341",
"text": " All index values of the array decorated with PrimitiveIndicesNV
must be in the range [0, N-1], where N is the value specified by the OutputVertices
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitiveIndicesNV-OutputPoints-04342",
"text": " If the {ExecutionMode} is OutputPoints
, then the array decorated with PrimitiveIndicesNV
must be the size of the value specified by OutputPrimitivesNV
"
},
{
"vuid": "VUID-PrimitiveIndicesNV-OutputLinesNV-04343",
"text": " If the {ExecutionMode} is OutputLinesNV
, then the array decorated with PrimitiveIndicesNV
must be the size of two times the value specified by OutputPrimitivesNV
"
},
{
"vuid": "VUID-PrimitiveIndicesNV-OutputTrianglesNV-04344",
"text": " If the {ExecutionMode} is OutputTrianglesNV
, then the array decorated with PrimitiveIndicesNV
must be the size of three times the value specified by OutputPrimitivesNV
"
}
]
},
"PrimitivePointIndicesEXT": {
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07041",
"text": " The PrimitivePointIndicesEXT
decoration must be used only within the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07042",
"text": " The PrimitivePointIndicesEXT
decoration must be used with the OutputPoints
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07043",
"text": " The variable decorated with PrimitivePointIndicesEXT
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07044",
"text": " The variable decorated with PrimitivePointIndicesEXT
must be declared as an array of scalar 32-bit integer values"
},
{
"vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07045",
"text": " All index values of the array decorated with PrimitivePointIndicesEXT
must be in the range [0, N-1], where N is the value specified by the OutputVertices
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitivePointIndicesEXT-PrimitivePointIndicesEXT-07046",
"text": " The size of the array decorated with PrimitivePointIndicesEXT
must match the value specified by OutputPrimitivesEXT
"
}
]
},
"PrimitiveLineIndicesEXT": {
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07047",
"text": " The PrimitiveLineIndicesEXT
decoration must be used only within the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07048",
"text": " The PrimitiveLineIndicesEXT
decoration must be used with the OutputLinesEXT
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07049",
"text": " The variable decorated with PrimitiveLineIndicesEXT
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07050",
"text": " The variable decorated with PrimitiveLineIndicesEXT
must be declared as an array of two component vector 32-bit integer values"
},
{
"vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07051",
"text": " All index values of the array decorated with PrimitiveLineIndicesEXT
must be in the range [0, N-1], where N is the value specified by the OutputVertices
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitiveLineIndicesEXT-PrimitiveLineIndicesEXT-07052",
"text": " The size of the array decorated with PrimitiveLineIndicesEXT
must match the value specified by OutputPrimitivesEXT
"
}
]
},
"PrimitiveTriangleIndicesEXT": {
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07053",
"text": " The PrimitiveTriangleIndicesEXT
decoration must be used only within the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07054",
"text": " The PrimitiveTriangleIndicesEXT
decoration must be used with the OutputTrianglesEXT
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07055",
"text": " The variable decorated with PrimitiveTriangleIndicesEXT
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07056",
"text": " The variable decorated with PrimitiveTriangleIndicesEXT
must be declared as an array of three component vector 32-bit integer values"
},
{
"vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07057",
"text": " All index values of the array decorated with PrimitiveTriangleIndicesEXT
must be in the range [0, N-1], where N is the value specified by the OutputVertices
{ExecutionMode}"
},
{
"vuid": "VUID-PrimitiveTriangleIndicesEXT-PrimitiveTriangleIndicesEXT-07058",
"text": " The size of the array decorated with PrimitiveTriangleIndicesEXT
must match the value specified by OutputPrimitivesEXT
"
}
]
},
"PrimitiveShadingRateKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04484",
"text": " The PrimitiveShadingRateKHR
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04485",
"text": " The variable decorated with PrimitiveShadingRateKHR
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04486",
"text": " The variable decorated with PrimitiveShadingRateKHR
must be declared as a scalar 32-bit integer value"
},
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04487",
"text": " The value written to PrimitiveShadingRateKHR
must include no more than one of Vertical2Pixels
and Vertical4Pixels
"
},
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04488",
"text": " The value written to PrimitiveShadingRateKHR
must include no more than one of Horizontal2Pixels
and Horizontal4Pixels
"
},
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04489",
"text": " The value written to PrimitiveShadingRateKHR
must not have any bits set other than those defined by Fragment Shading Rate Flags enumerants in the SPIR-V specification"
},
{
"vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-07059",
"text": " The variable decorated with PrimitiveShadingRateKHR
within the MeshEXT
{ExecutionModel} must also be decorated with the PerPrimitiveEXT
decoration"
}
]
},
"RayGeometryIndexKHR": {
"(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04345",
"text": " The RayGeometryIndexKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04346",
"text": " The variable decorated with RayGeometryIndexKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04347",
"text": " The variable decorated with RayGeometryIndexKHR
must be declared as a scalar 32-bit integer value"
}
]
},
"RayTmaxKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04348",
"text": " The RayTmaxKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04349",
"text": " The variable decorated with RayTmaxKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04350",
"text": " The variable decorated with RayTmaxKHR
must be declared as a scalar 32-bit floating-point value"
}
]
},
"RayTminKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-RayTminKHR-RayTminKHR-04351",
"text": " The RayTminKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-RayTminKHR-RayTminKHR-04352",
"text": " The variable decorated with RayTminKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-RayTminKHR-RayTminKHR-04353",
"text": " The variable decorated with RayTminKHR
must be declared as a scalar 32-bit floating-point value"
}
]
},
"SampleId": {
"core": [
{
"vuid": "VUID-SampleId-SampleId-04354",
"text": " The SampleId
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-SampleId-SampleId-04355",
"text": " The variable decorated with SampleId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SampleId-SampleId-04356",
"text": " The variable decorated with SampleId
must be declared as a scalar 32-bit integer value"
}
]
},
"SampleMask": {
"core": [
{
"vuid": "VUID-SampleMask-SampleMask-04357",
"text": " The SampleMask
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-SampleMask-SampleMask-04358",
"text": " The variable decorated with SampleMask
must be declared using the Input
or Output
{StorageClass}"
},
{
"vuid": "VUID-SampleMask-SampleMask-04359",
"text": " The variable decorated with SampleMask
must be declared as an array of 32-bit integer values"
}
]
},
"SamplePosition": {
"core": [
{
"vuid": "VUID-SamplePosition-SamplePosition-04360",
"text": " The SamplePosition
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-SamplePosition-SamplePosition-04361",
"text": " The variable decorated with SamplePosition
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SamplePosition-SamplePosition-04362",
"text": " The variable decorated with SamplePosition
must be declared as a two-component vector of 32-bit floating-point values"
}
]
},
"ShadingRateKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04490",
"text": " The ShadingRateKHR
decoration must be used only within the Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04491",
"text": " The variable decorated with ShadingRateKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04492",
"text": " The variable decorated with ShadingRateKHR
must be declared as a scalar 32-bit integer value"
}
]
},
"SMCountNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-SMCountNV-SMCountNV-04363",
"text": " The variable decorated with SMCountNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SMCountNV-SMCountNV-04364",
"text": " The variable decorated with SMCountNV
must be declared as a scalar 32-bit integer value"
}
]
},
"SMIDNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-SMIDNV-SMIDNV-04365",
"text": " The variable decorated with SMIDNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SMIDNV-SMIDNV-04366",
"text": " The variable decorated with SMIDNV
must be declared as a scalar 32-bit integer value"
}
]
},
"SubgroupId": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-SubgroupId-SubgroupId-04367",
"text": " The SubgroupId
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-SubgroupId-SubgroupId-04368",
"text": " The variable decorated with SubgroupId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupId-SubgroupId-04369",
"text": " The variable decorated with SubgroupId
must be declared as a scalar 32-bit integer value"
}
]
},
"SubgroupEqMask": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04370",
"text": " The variable decorated with SubgroupEqMask
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04371",
"text": " The variable decorated with SubgroupEqMask
must be declared as a four-component vector of 32-bit integer values"
}
]
},
"SubgroupGeMask": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04372",
"text": " The variable decorated with SubgroupGeMask
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04373",
"text": " The variable decorated with SubgroupGeMask
must be declared as a four-component vector of 32-bit integer values"
}
]
},
"SubgroupGtMask": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04374",
"text": " The variable decorated with SubgroupGtMask
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04375",
"text": " The variable decorated with SubgroupGtMask
must be declared as a four-component vector of 32-bit integer values"
}
]
},
"SubgroupLeMask": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04376",
"text": " The variable decorated with SubgroupLeMask
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04377",
"text": " The variable decorated with SubgroupLeMask
must be declared as a four-component vector of 32-bit integer values"
}
]
},
"SubgroupLtMask": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04378",
"text": " The variable decorated with SubgroupLtMask
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04379",
"text": " The variable decorated with SubgroupLtMask
must be declared as a four-component vector of 32-bit integer values"
}
]
},
"SubgroupLocalInvocationId": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04380",
"text": " The variable decorated with SubgroupLocalInvocationId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04381",
"text": " The variable decorated with SubgroupLocalInvocationId
must be declared as a scalar 32-bit integer value"
}
]
},
"SubgroupSize": {
"(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [
{
"vuid": "VUID-SubgroupSize-SubgroupSize-04382",
"text": " The variable decorated with SubgroupSize
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-SubgroupSize-SubgroupSize-04383",
"text": " The variable decorated with SubgroupSize
must be declared as a scalar 32-bit integer value"
}
]
},
"TaskCountNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-TaskCountNV-TaskCountNV-04384",
"text": " The TaskCountNV
decoration must be used only within the TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-TaskCountNV-TaskCountNV-04385",
"text": " The variable decorated with TaskCountNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-TaskCountNV-TaskCountNV-04386",
"text": " The variable decorated with TaskCountNV
must be declared as a scalar 32-bit integer value"
}
]
},
"TessCoord": {
"core": [
{
"vuid": "VUID-TessCoord-TessCoord-04387",
"text": " The TessCoord
decoration must be used only within the TessellationEvaluation
{ExecutionModel}"
},
{
"vuid": "VUID-TessCoord-TessCoord-04388",
"text": " The variable decorated with TessCoord
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-TessCoord-TessCoord-04389",
"text": " The variable decorated with TessCoord
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"TessLevelOuter": {
"core": [
{
"vuid": "VUID-TessLevelOuter-TessLevelOuter-04390",
"text": " The TessLevelOuter
decoration must be used only within the TessellationControl
or TessellationEvaluation
{ExecutionModel}"
},
{
"vuid": "VUID-TessLevelOuter-TessLevelOuter-04391",
"text": " The variable decorated with TessLevelOuter
within the TessellationControl
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-TessLevelOuter-TessLevelOuter-04392",
"text": " The variable decorated with TessLevelOuter
within the TessellationEvaluation
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-TessLevelOuter-TessLevelOuter-04393",
"text": " The variable decorated with TessLevelOuter
must be declared as an array of size four, containing 32-bit floating-point values"
}
]
},
"TessLevelInner": {
"core": [
{
"vuid": "VUID-TessLevelInner-TessLevelInner-04394",
"text": " The TessLevelInner
decoration must be used only within the TessellationControl
or TessellationEvaluation
{ExecutionModel}"
},
{
"vuid": "VUID-TessLevelInner-TessLevelInner-04395",
"text": " The variable decorated with TessLevelInner
within the TessellationControl
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-TessLevelInner-TessLevelInner-04396",
"text": " The variable decorated with TessLevelInner
within the TessellationEvaluation
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-TessLevelInner-TessLevelInner-04397",
"text": " The variable decorated with TessLevelInner
must be declared as an array of size two, containing 32-bit floating-point values"
}
]
},
"VertexIndex": {
"core": [
{
"vuid": "VUID-VertexIndex-VertexIndex-04398",
"text": " The VertexIndex
decoration must be used only within the Vertex
{ExecutionModel}"
},
{
"vuid": "VUID-VertexIndex-VertexIndex-04399",
"text": " The variable decorated with VertexIndex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-VertexIndex-VertexIndex-04400",
"text": " The variable decorated with VertexIndex
must be declared as a scalar 32-bit integer value"
}
]
},
"ViewIndex": {
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-ViewIndex-ViewIndex-04401",
"text": " The ViewIndex
decoration must be used only within the MeshEXT
, Vertex
, Geometry
, TessellationControl
, TessellationEvaluation
or Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-ViewIndex-ViewIndex-04402",
"text": " The variable decorated with ViewIndex
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ViewIndex-ViewIndex-04403",
"text": " The variable decorated with ViewIndex
must be declared as a scalar 32-bit integer value"
}
]
},
"ViewportIndex": {
"core": [
{
"vuid": "VUID-ViewportIndex-ViewportIndex-04404",
"text": " The ViewportIndex
decoration must be used only within the MeshEXT
, MeshNV
, Vertex
, TessellationEvaluation
, Geometry
, or Fragment
{ExecutionModel}"
},
{
"vuid": "VUID-ViewportIndex-ViewportIndex-04406",
"text": " The variable decorated with ViewportIndex
within the MeshEXT
, MeshNV
, Vertex
, TessellationEvaluation
, or Geometry
{ExecutionModel} must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-ViewportIndex-ViewportIndex-04407",
"text": " The variable decorated with ViewportIndex
within the Fragment
{ExecutionModel} must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-ViewportIndex-ViewportIndex-04408",
"text": " The variable decorated with ViewportIndex
must be declared as a scalar 32-bit integer value"
},
{
"vuid": "VUID-ViewportIndex-ViewportIndex-07060",
"text": " The variable decorated with ViewportIndex
within the MeshEXT
{ExecutionModel} must also be decorated with the PerPrimitiveEXT
decoration"
}
],
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-ViewportIndex-ViewportIndex-04405",
"text": " If the shaderOutputViewportIndex
feature is not enabled then the ViewportIndex
decoration must be used only within the Geometry
or Fragment
{ExecutionModel}"
}
]
},
"ViewportMaskNV": {
"(VK_NV_viewport_array2)": [
{
"vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04409",
"text": " The ViewportMaskNV
decoration must be used only within the Vertex
, MeshNV
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04410",
"text": " The variable decorated with ViewportMaskNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04411",
"text": " The variable decorated with ViewportMaskNV
must be declared as an array of 32-bit integer values"
}
]
},
"ViewportMaskPerViewNV": {
"(VK_NVX_multiview_per_view_attributes+VK_NV_viewport_array2)": [
{
"vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04412",
"text": " The ViewportMaskPerViewNV
decoration must be used only within the Vertex
, MeshNV
, TessellationControl
, TessellationEvaluation
, or Geometry
{ExecutionModel}"
},
{
"vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04413",
"text": " The variable decorated with ViewportMaskPerViewNV
must be declared using the Output
{StorageClass}"
},
{
"vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04414",
"text": " The variable decorated with ViewportMaskPerViewNV
must be declared as an array of 32-bit integer values"
},
{
"vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04415",
"text": " The array decorated with ViewportMaskPerViewNV
must be a size less than or equal to 32"
},
{
"vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04416",
"text": " The array decorated with ViewportMaskPerViewNV
must be a size greater than the maximum view in the subpass’s view mask"
},
{
"vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04417",
"text": " The array variable decorated with ViewportMaskPerViewNV
must only be indexed by a constant or specialization constant"
}
]
},
"WarpsPerSMNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04418",
"text": " The variable decorated with WarpsPerSMNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04419",
"text": " The variable decorated with WarpsPerSMNV
must be declared as a scalar 32-bit integer value"
}
]
},
"WarpIDNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-WarpIDNV-WarpIDNV-04420",
"text": " The variable decorated with WarpIDNV
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WarpIDNV-WarpIDNV-04421",
"text": " The variable decorated with WarpIDNV
must be declared as a scalar 32-bit integer value"
}
]
},
"WorkgroupId": {
"core": [
{
"vuid": "VUID-WorkgroupId-WorkgroupId-04422",
"text": " The WorkgroupId
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-WorkgroupId-WorkgroupId-04423",
"text": " The variable decorated with WorkgroupId
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WorkgroupId-WorkgroupId-04424",
"text": " The variable decorated with WorkgroupId
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"WorkgroupSize": {
"core": [
{
"vuid": "VUID-WorkgroupSize-WorkgroupSize-04425",
"text": " The WorkgroupSize
decoration must be used only within the GLCompute
, MeshEXT
, TaskEXT
, MeshNV
, or TaskNV
{ExecutionModel}"
},
{
"vuid": "VUID-WorkgroupSize-WorkgroupSize-04426",
"text": " The variable decorated with WorkgroupSize
must be a specialization constant or a constant"
},
{
"vuid": "VUID-WorkgroupSize-WorkgroupSize-04427",
"text": " The variable decorated with WorkgroupSize
must be declared as a three-component vector of 32-bit integer values"
}
]
},
"WorldRayDirectionKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04428",
"text": " The WorldRayDirectionKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04429",
"text": " The variable decorated with WorldRayDirectionKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04430",
"text": " The variable decorated with WorldRayDirectionKHR
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"WorldRayOriginKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04431",
"text": " The WorldRayOriginKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, ClosestHitKHR
, or MissKHR
{ExecutionModel}"
},
{
"vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04432",
"text": " The variable decorated with WorldRayOriginKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04433",
"text": " The variable decorated with WorldRayOriginKHR
must be declared as a three-component vector of 32-bit floating-point values"
}
]
},
"WorldToObjectKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04434",
"text": " The WorldToObjectKHR
decoration must be used only within the IntersectionKHR
, AnyHitKHR
, or ClosestHitKHR
{ExecutionModel}"
},
{
"vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04435",
"text": " The variable decorated with WorldToObjectKHR
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04436",
"text": " The variable decorated with WorldToObjectKHR
must be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values"
}
]
},
"CoreCountARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-CoreCountARM-CoreCountARM-07595",
"text": " The variable decorated with CoreCountARM
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-CoreCountARM-CoreCountARM-07596",
"text": " The variable decorated with CoreCountARM
must be declared as a scalar 32-bit integer value"
}
]
},
"CoreMaxIDARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-CoreMaxIDARM-CoreMaxIDARM-07597",
"text": " The variable decorated with CoreMaxIDARM
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-CoreMaxIDARM-CoreMaxIDARM-07598",
"text": " The variable decorated with CoreMaxIDARM
must be declared as a scalar 32-bit integer value"
}
]
},
"CoreIDARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-CoreIDARM-CoreIDARM-07599",
"text": " The variable decorated with CoreIDARM
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-CoreIDARM-CoreIDARM-07600",
"text": " The variable decorated with CoreIDARM
must be declared as a scalar 32-bit integer value"
}
]
},
"WarpMaxIDARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-WarpMaxIDARM-WarpMaxIDARM-07601",
"text": " The variable decorated with WarpMaxIDARM
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WarpMaxIDARM-WarpMaxIDARM-07602",
"text": " The variable decorated with WarpMaxIDARM
must be declared as a scalar 32-bit integer value"
}
]
},
"WarpIDARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-WarpIDARM-WarpIDARM-07603",
"text": " The variable decorated with WarpIDARM
must be declared using the Input
{StorageClass}"
},
{
"vuid": "VUID-WarpIDARM-WarpIDARM-07604",
"text": " The variable decorated with WarpIDARM
must be declared as a scalar 32-bit integer value"
}
]
},
"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 pipelineStatisticsQuery
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-queryCount-02763",
"text": " queryCount
must be greater than 0"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-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 VkQueryPoolPerformanceCreateInfoKHR, VkQueryPoolPerformanceQueryCreateInfoINTEL, VkVideoDecodeH264ProfileInfoEXT, VkVideoDecodeH265ProfileInfoEXT, VkVideoDecodeUsageInfoKHR, VkVideoEncodeH264ProfileInfoEXT, VkVideoEncodeH265ProfileInfoEXT, VkVideoEncodeUsageInfoKHR, or VkVideoProfileInfoKHR"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkQueryPoolCreateInfo-meshShaderQueries-07068",
"text": " If the meshShaderQueries
feature is not enabled, queryType
must not be VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
"
},
{
"vuid": "VUID-VkQueryPoolCreateInfo-meshShaderQueries-07069",
"text": " If the meshShaderQueries
feature is not enabled, and queryType
is VK_QUERY_TYPE_PIPELINE_STATISTICS
, pipelineStatistics
must not contain VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT
or VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT
"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkQueryPoolCreateInfo-queryType-03222",
"text": " If queryType
is VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the pNext
chain must include a VkQueryPoolPerformanceCreateInfoKHR structure"
}
]
},
"VkQueryPoolPerformanceCreateInfoKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236",
"text": " queueFamilyIndex
must be a valid queue family index of the device"
},
{
"vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237",
"text": " The performanceCounterQueryPools
feature must be enabled"
},
{
"vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321",
"text": " Each element of pCounterIndices
must be in the range of counters reported by vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR
for the queue family specified in queueFamilyIndex
"
},
{
"vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter",
"text": " pCounterIndices
must be a valid pointer to an array of counterIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength",
"text": " counterIndexCount
must be greater than 0
"
}
]
},
"vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter",
"text": " pPerformanceQueryCreateInfo
must be a valid pointer to a valid VkQueryPoolPerformanceCreateInfoKHR structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pNumPasses-parameter",
"text": " pNumPasses
must be a valid pointer to a uint32_t
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-None-02841",
"text": " All queries used by the command must not be active"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdResetQueryPool-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResetQueryPool-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdResetQueryPool-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkCmdResetQueryPool-firstQuery-02862",
"text": " If queryPool
was created with VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries [firstQuery
, firstQuery
+ queryCount
- 1]"
}
]
},
"vkResetQueryPool": {
"(VK_VERSION_1_2,VK_EXT_host_query_reset)": [
{
"vuid": "VUID-vkResetQueryPool-None-02665",
"text": " The hostQueryReset
feature must be enabled"
},
{
"vuid": "VUID-vkResetQueryPool-firstQuery-02666",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkResetQueryPool-firstQuery-02667",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkResetQueryPool-firstQuery-02741",
"text": " Submitted commands that refer to the range specified by firstQuery
and queryCount
in queryPool
must have completed execution"
},
{
"vuid": "VUID-vkResetQueryPool-firstQuery-02742",
"text": " The range of queries specified by firstQuery
and queryCount
in queryPool
must not be in use by calls to vkGetQueryPoolResults or vkResetQueryPool
in other threads"
},
{
"vuid": "VUID-vkResetQueryPool-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkResetQueryPool-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkResetQueryPool-queryPool-parent",
"text": " queryPool
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdBeginQuery": {
"core": [
{
"vuid": "VUID-vkCmdBeginQuery-None-00807",
"text": " All queries used by the command must be unavailable"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-02804",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_TIMESTAMP
"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-00800",
"text": " If the occlusionQueryPrecise
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-queryPool-01922",
"text": " queryPool
must have been created with a queryType
that differs from that of any queries that are active within commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdBeginQuery-flags-parameter",
"text": " flags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-04728",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
}
],
"(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-06741",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
"
}
],
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-04729",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdBeginQuery-query-00808",
"text": " If called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
],
"(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-04862",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR
the VkCommandPool
that commandBuffer
was allocated from must support video encode operations"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-07070",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-02327",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-02328",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
then VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackQueries
must be supported"
}
],
"(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryType-06687",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryType-06688",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
then primitivesGeneratedQuery
must be enabled"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-07289",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, then the VkQueryPoolPerformanceCreateInfoKHR::queueFamilyIndex
queryPool
was created with must equal the queue family index of the VkCommandPool
that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-03223",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the profiling lock must have been held before vkBeginCommandBuffer was called on commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-03224",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one of the counters used to create queryPool
was VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR
, the query begin must be the first recorded command in commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-03225",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one of the counters used to create queryPool
was VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR
, the begin command must not be recorded within a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginQuery-queryPool-03226",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and another query pool with a queryType
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
has been used within commandBuffer
, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as commandBuffer
, the performanceCounterMultipleQueryPools
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBeginQuery-None-02863",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a vkCmdResetQueryPool
command affecting the same query"
}
]
},
"vkCmdBeginQueryIndexedEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807",
"text": " All queries used by the command must be unavailable"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02804",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_TIMESTAMP
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800",
"text": " If the occlusionQueryPrecise
feature is not enabled, or the queryType
used to create queryPool
was not VK_QUERY_TYPE_OCCLUSION
, flags
must not contain VK_QUERY_CONTROL_PRECISE_BIT
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_OCCLUSION
, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PIPELINE_STATISTICS
and any of the pipelineStatistics
indicate graphics operations, the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PIPELINE_STATISTICS
and any of the pipelineStatistics
indicate compute operations, the VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-04753",
"text": " If the queryPool
was created with the same queryType
as that of another active query within commandBuffer
, then index
must not match the index used for the active query"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
then VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackQueries
must be supported"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
"text": " flags
must be a valid combination of VkQueryControlFlagBits values"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_transform_feedback)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04728",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
}
],
"(VK_EXT_transform_feedback)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06741",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
"
}
],
"(VK_EXT_transform_feedback)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04729",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808",
"text": " If called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
],
"(VK_EXT_transform_feedback)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-04862",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_VIDEO_ENCODE_BITSTREAM_BUFFER_RANGE_KHR
the VkCommandPool
that commandBuffer
was allocated from must support video encode operations"
}
],
"(VK_EXT_transform_feedback)+!(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
"text": " If the queryType
used to create queryPool
was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
must be zero"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06689",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
the VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06690",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
the index
parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06691",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
and the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled, the index
parameter must be zero."
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06692",
"text": " If the queryType
used to create queryPool
was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
and not VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
, the index
must be zero"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-06693",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
then primitivesGeneratedQuery
must be enabled"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-07071",
"text": " The queryType
used to create queryPool
must not be VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT
"
}
],
"(VK_EXT_transform_feedback)+(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-07289",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, then the VkQueryPoolPerformanceCreateInfoKHR::queueFamilyIndex
queryPool
was created with must equal the queue family index of the VkCommandPool
that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the profiling lock must have been held before vkBeginCommandBuffer was called on commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one of the counters used to create queryPool
was VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR
, the query begin must be the first recorded command in commandBuffer
"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one of the counters used to create queryPool
was VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR
, the begin command must not be recorded within a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and another query pool with a queryType
VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
has been used within commandBuffer
, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as commandBuffer
, the performanceCounterMultipleQueryPools
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02863",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, this command must not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a vkCmdResetQueryPool
command affecting the same query"
}
]
},
"vkCmdEndQuery": {
"core": [
{
"vuid": "VUID-vkCmdEndQuery-None-01923",
"text": " All queries used by the command must be active"
},
{
"vuid": "VUID-vkCmdEndQuery-query-00810",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdEndQuery-None-07007",
"text": " If called within a subpass of a render pass instance, the corresponding vkCmdBeginQuery
* command must have been called previously within the same subpass"
},
{
"vuid": "VUID-vkCmdEndQuery-None-07008",
"text": " If called outside of a render pass instance, the corresponding vkCmdBeginQuery
* command must have been called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode 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
"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkCmdEndQuery-queryPool-03227",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one or more of the counters used to create queryPool
was VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR
, the vkCmdEndQuery must be the last recorded command in commandBuffer
"
},
{
"vuid": "VUID-vkCmdEndQuery-queryPool-03228",
"text": " If queryPool
was created with a queryType
of VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
and one or more of the counters used to create queryPool
was VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR
, the vkCmdEndQuery must not be recorded within a render pass instance"
}
]
},
"vkCmdEndQueryIndexedEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
"text": " All queries used by the command must be active"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-None-07007",
"text": " If called within a subpass of a render pass instance, the corresponding vkCmdBeginQuery
* command must have been called previously within the same subpass"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-None-07008",
"text": " If called outside of a render pass instance, the corresponding vkCmdBeginQuery
* command must have been called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
"text": " If vkCmdEndQueryIndexedEXT
is called within a render pass instance, the sum of query
and the number of bits set in the current subpass’s view mask must be less than or equal to the number of queries in queryPool
"
}
],
"(VK_EXT_transform_feedback)+!(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
"text": " If the queryType
used to create queryPool
was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
the index
must be zero"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02723",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
index
must equal the index
used to begin the query"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-06694",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
or VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
, the index
parameter must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-06695",
"text": " If the queryType
used to create queryPool
was not VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
and not VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
, the index
must be zero"
},
{
"vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-06696",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT
or VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
, index
must equal the index
used to begin the query"
}
]
},
"vkGetQueryPoolResults": {
"core": [
{
"vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-flags-00815",
"text": " If VK_QUERY_RESULT_64_BIT
is set in flags
then pData
and stride
must be multiples of 8
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
"text": " dataSize
must be large enough to contain the result of each query, as described here"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TIMESTAMP
, flags
must not contain VK_QUERY_RESULT_PARTIAL_BIT
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
"text": " flags
must be a valid combination of VkQueryResultFlagBits values"
},
{
"vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
"text": " queryPool
must have been created, allocated, or retrieved from device
"
}
],
"!(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkGetQueryPoolResults-flags-02827",
"text": " If VK_QUERY_RESULT_64_BIT
is not set in flags
, then pData
and stride
must be multiples of 4
"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkGetQueryPoolResults-flags-02828",
"text": " If VK_QUERY_RESULT_64_BIT
is not set in flags
and the queryType
used to create queryPool
was not VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, then pData
and stride
must be multiples of 4
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-03229",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, then pData
and stride
must be multiples of the size of VkPerformanceCounterResultKHR"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-04519",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, then stride
must be large enough to contain VkQueryPoolPerformanceCreateInfoKHR
::counterIndexCount
used to create queryPool
times the size of VkPerformanceCounterResultKHR"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-03230",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, flags
must not contain VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
, VK_QUERY_RESULT_PARTIAL_BIT
or VK_QUERY_RESULT_64_BIT
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-03231",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the queryPool
must have been recorded once for each pass as retrieved via a call to vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
}
],
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-04810",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR
, flags
must include VK_QUERY_RESULT_WITH_STATUS_BIT_KHR
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-flags-04811",
"text": " If flags
includes VK_QUERY_RESULT_WITH_STATUS_BIT_KHR
, it must not include VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
"
},
{
"vuid": "VUID-vkGetQueryPoolResults-queryType-06900",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, flags
must not contain VK_QUERY_RESULT_WITH_STATUS_BIT_KHR
"
}
]
},
"vkCmdCopyQueryPoolResults": {
"core": [
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
"text": " dstOffset
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
"text": " firstQuery
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
"text": " The sum of firstQuery
and queryCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
"text": " If VK_QUERY_RESULT_64_BIT
is not set in flags
then dstOffset
and stride
must be multiples of 4
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
"text": " If VK_QUERY_RESULT_64_BIT
is set in flags
then dstOffset
and stride
must be multiples of 8
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
"text": " dstBuffer
must have enough storage, from dstOffset
, to contain the result of each query, as described here"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_TIMESTAMP
, flags
must not contain VK_QUERY_RESULT_PARTIAL_BIT
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-None-07429",
"text": " All queries used by the command must not be active"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
"text": " flags
must be a valid combination of VkQueryResultFlagBits values"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
"text": " Each of commandBuffer
, dstBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03232",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, VkPhysicalDevicePerformanceQueryPropertiesKHR::allowCommandBufferQueryCopies
must be VK_TRUE
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03233",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, flags
must not contain VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
, VK_QUERY_RESULT_PARTIAL_BIT
or VK_QUERY_RESULT_64_BIT
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03234",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, the queryPool
must have been submitted once for each pass as retrieved via a call to vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR"
}
],
"(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734",
"text": " vkCmdCopyQueryPoolResults must not be called if the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL
"
}
],
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-06901",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR
, flags
must include VK_QUERY_RESULT_WITH_STATUS_BIT_KHR
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-flags-06902",
"text": " If flags
includes VK_QUERY_RESULT_WITH_STATUS_BIT_KHR
, it must not include VK_QUERY_RESULT_WITH_AVAILABILITY_BIT
"
},
{
"vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-06903",
"text": " If the queryType
used to create queryPool
was VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR
, flags
must not contain VK_QUERY_RESULT_WITH_STATUS_BIT_KHR
"
}
]
},
"vkCmdWriteTimestamp2": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03929",
"text": " If the geometryShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03930",
"text": " If the tessellationShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-synchronization2-03858",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03859",
"text": " stage
must only include a single pipeline stage"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03860",
"text": " stage
must only include stages valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-queryPool-03861",
"text": " queryPool
must have been created with a queryType
of VK_QUERY_TYPE_TIMESTAMP
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-queryPool-03862",
"text": " The query identified by queryPool
and query
must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-timestampValidBits-03863",
"text": " The command pool’s queue family must support a non-zero timestampValidBits
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-query-04903",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-parameter",
"text": " stage
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03933",
"text": " If the transformFeedback
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03934",
"text": " If the meshShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-03935",
"text": " If the taskShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-04957",
"text": " If the subpassShading
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-stage-04995",
"text": " If the invocationMask
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdWriteTimestamp2-None-03864",
"text": " All queries used by the command must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteTimestamp2-query-03865",
"text": " If vkCmdWriteTimestamp2
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
"
}
]
},
"vkCmdWriteTimestamp": {
"core": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04074",
"text": " pipelineStage
must be a valid stage for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04075",
"text": " If the geometryShader
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04076",
"text": " If the tessellationShader
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"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-query-04904",
"text": " query
must be less than the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
"text": " pipelineStage
must be a valid VkPipelineStageFlagBits value"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, compute, decode, or encode operations"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-commonparent",
"text": " Both of commandBuffer
, and queryPool
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04077",
"text": " If the conditionalRendering
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04078",
"text": " If the fragmentDensityMap
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04079",
"text": " If the transformFeedback
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04080",
"text": " If the meshShader
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-07077",
"text": " If the task shaders feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04081",
"text": " If the shadingRateImage
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-shadingRateImage-07314",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pipelineStage
must not be VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-fragmentShadingRate-07315",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-synchronization2-06489",
"text": " If the synchronization2
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_NONE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-06490",
"text": " pipelineStage
must not be VK_PIPELINE_STAGE_NONE
"
}
],
"(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
"
}
]
},
"vkAcquireProfilingLockKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkAcquireProfilingLockKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkAcquireProfilingLockKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkAcquireProfilingLockInfoKHR structure"
}
]
},
"VkAcquireProfilingLockInfoKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkAcquireProfilingLockInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR
"
},
{
"vuid": "VUID-VkAcquireProfilingLockInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAcquireProfilingLockInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkReleaseProfilingLockKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-vkReleaseProfilingLockKHR-device-03235",
"text": " The profiling lock of device
must have been held via a previous successful call to vkAcquireProfilingLockKHR"
},
{
"vuid": "VUID-vkReleaseProfilingLockKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
}
]
},
"vkInitializePerformanceApiINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter",
"text": " pInitializeInfo
must be a valid pointer to a valid VkInitializePerformanceApiInfoINTEL structure"
}
]
},
"VkInitializePerformanceApiInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL
"
},
{
"vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkUninitializePerformanceApiINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter",
"text": " device
must be a valid VkDevice handle"
}
]
},
"vkGetPerformanceParameterINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter",
"text": " parameter
must be a valid VkPerformanceParameterTypeINTEL value"
},
{
"vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter",
"text": " pValue
must be a valid pointer to a VkPerformanceValueINTEL structure"
}
]
},
"VkPerformanceValueINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceValueINTEL-type-parameter",
"text": " type
must be a valid VkPerformanceValueTypeINTEL value"
},
{
"vuid": "VUID-VkPerformanceValueINTEL-valueString-parameter",
"text": " If type
is VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL
, the valueString
member of data
must be a null-terminated UTF-8 string"
}
]
},
"VkQueryPoolPerformanceQueryCreateInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL
"
},
{
"vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter",
"text": " performanceCountersSampling
must be a valid VkQueryPoolSamplingModeINTEL value"
}
]
},
"vkCmdSetPerformanceMarkerINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkPerformanceMarkerInfoINTEL structure"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
},
{
"vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPerformanceMarkerInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdSetPerformanceStreamMarkerINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkPerformanceStreamMarkerInfoINTEL structure"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
},
{
"vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPerformanceStreamMarkerInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735",
"text": " The value written by the application into marker
must only used the valid bits as reported by vkGetPerformanceParameterINTEL with the VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL
"
},
{
"vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdSetPerformanceOverrideINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736",
"text": " pOverrideInfo
must not be used with a VkPerformanceOverrideTypeINTEL that is not reported available by vkGetPerformanceParameterINTEL
"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter",
"text": " pOverrideInfo
must be a valid pointer to a valid VkPerformanceOverrideInfoINTEL structure"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
},
{
"vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPerformanceOverrideInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter",
"text": " type
must be a valid VkPerformanceOverrideTypeINTEL value"
}
]
},
"vkAcquirePerformanceConfigurationINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter",
"text": " pAcquireInfo
must be a valid pointer to a valid VkPerformanceConfigurationAcquireInfoINTEL structure"
},
{
"vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter",
"text": " pConfiguration
must be a valid pointer to a VkPerformanceConfigurationINTEL handle"
}
]
},
"VkPerformanceConfigurationAcquireInfoINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL
"
},
{
"vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter",
"text": " type
must be a valid VkPerformanceConfigurationTypeINTEL value"
}
]
},
"vkQueueSetPerformanceConfigurationINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter",
"text": " configuration
must be a valid VkPerformanceConfigurationINTEL handle"
},
{
"vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent",
"text": " Both of configuration
, and queue
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkReleasePerformanceConfigurationINTEL": {
"(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737",
"text": " configuration
must not be released before all command buffers submitted while the configuration was set are in pending state"
},
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter",
"text": " If configuration
is not VK_NULL_HANDLE, configuration
must be a valid VkPerformanceConfigurationINTEL handle"
},
{
"vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent",
"text": " If configuration
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkQueueFamilyQueryResultStatusPropertiesKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkQueueFamilyQueryResultStatusPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR
"
}
]
},
"vkCmdClearColorImage": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdClearColorImage-image-01993",
"text": " The format features of image
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
}
],
"core": [
{
"vuid": "VUID-vkCmdClearColorImage-image-00002",
"text": " image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdClearColorImage-image-00003",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
"text": " imageLayout
must specify the layout of the image subresource ranges of image
specified in pRanges
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
"text": " The VkImageSubresourceRange::aspectMask
members of the elements of the pRanges
array must each only include VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
"text": " The VkImageSubresourceRange::baseMipLevel
members of the elements of the pRanges
array must each be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
"text": " For each VkImageSubresourceRange element of pRanges
, if the levelCount
member is not VK_REMAINING_MIP_LEVELS
, then baseMipLevel
+ levelCount
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
"text": " The VkImageSubresourceRange::baseArrayLayer
members of the elements of the pRanges
array must each be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
"text": " For each VkImageSubresourceRange element of pRanges
, if the layerCount
member is not VK_REMAINING_ARRAY_LAYERS
, then baseArrayLayer
+ layerCount
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearColorImage-image-00007",
"text": " image
must not have a compressed or depth/stencil format"
},
{
"vuid": "VUID-vkCmdClearColorImage-pColor-04961",
"text": " pColor
must be a valid pointer to a VkClearColorValue union"
},
{
"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-pRanges-parameter",
"text": " pRanges
must be a valid pointer to an array of rangeCount
valid VkImageSubresourceRange structures"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdClearColorImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdClearColorImage-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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 any of the formats that require a 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 and protectedNoFault
is not supported, image
must not be a protected image"
},
{
"vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, must not be an unprotected image"
}
]
},
"vkCmdClearDepthStencilImage": {
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
"text": " The format features of image
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
}
],
"!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
"text": " image
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
}
],
"(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658",
"text": " If the aspect
member of any element of pRanges
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and image
was created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageStencilUsageCreateInfo::stencilUsage
used to create image
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659",
"text": " If the aspect
member of any element of pRanges
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and image
was not created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageCreateInfo::usage
used to create image
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660",
"text": " If the aspect
member of any element of pRanges
includes VK_IMAGE_ASPECT_DEPTH_BIT
, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageCreateInfo::usage
used to create image
"
}
],
"core": [
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
"text": " If image
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
"text": " imageLayout
must specify the layout of the image subresource ranges of image
specified in pRanges
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
"text": " imageLayout
must be either of VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02824",
"text": " The VkImageSubresourceRange::aspectMask
member of each element of the pRanges
array must not include bits other than VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-02825",
"text": " If the image
’s format does not have a stencil component, then the VkImageSubresourceRange::aspectMask
member of each element of the pRanges
array must not include the VK_IMAGE_ASPECT_STENCIL_BIT
bit"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-02826",
"text": " If the image
’s format does not have a depth component, then the VkImageSubresourceRange::aspectMask
member of each element of the pRanges
array must not include the VK_IMAGE_ASPECT_DEPTH_BIT
bit"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
"text": " The VkImageSubresourceRange::baseMipLevel
members of the elements of the pRanges
array must each be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
"text": " For each VkImageSubresourceRange element of pRanges
, if the levelCount
member is not VK_REMAINING_MIP_LEVELS
, then baseMipLevel
+ levelCount
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
"text": " The VkImageSubresourceRange::baseArrayLayer
members of the elements of the pRanges
array must each be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
"text": " For each VkImageSubresourceRange element of pRanges
, if the layerCount
member is not VK_REMAINING_ARRAY_LAYERS
, then baseArrayLayer
+ layerCount
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
"text": " image
must have a depth/stencil format"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
"text": " pDepthStencil
must be a valid pointer to a valid VkClearDepthStencilValue structure"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
"text": " pRanges
must be a valid pointer to an array of rangeCount
valid VkImageSubresourceRange structures"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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 and protectedNoFault
is not supported, image
must not be a protected image"
},
{
"vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, image
must not be an unprotected image"
}
]
},
"vkCmdClearAttachments": {
"core": [
{
"vuid": "VUID-vkCmdClearAttachments-pAttachments-07270",
"text": " For each element of pAttachments
, the corresponding attachment in the current render pass instance must either not be backed by an image view, or contain each of the aspects specified in aspectMask
"
},
{
"vuid": "VUID-vkCmdClearAttachments-aspectMask-07271",
"text": " If the aspectMask
member of any element of pAttachments
contains VK_IMAGE_ASPECT_COLOR_BIT
, the colorAttachment
must be a valid color attachment index in the current render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-rect-02682",
"text": " The rect
member of each element of pRects
must have an extent.width
greater than 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-rect-02683",
"text": " The rect
member of each element of pRects
must have an extent.height
greater than 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-pRects-00016",
"text": " The rectangular region specified by each element of pRects
must be contained within the render area of the current render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-pRects-06937",
"text": " The layers specified by each element of pRects
must be contained within every attachment that pAttachments
refers to, i.e. for each element of pRects
, VkClearRect::baseArrayLayer
+ VkClearRect::layerCount
must be less than or equal to the number of layers rendered to in the current render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
"text": " The layerCount
member of each element of pRects
must not be 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
"text": " pAttachments
must be a valid pointer to an array of attachmentCount
valid VkClearAttachment structures"
},
{
"vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
"text": " pRects
must be a valid pointer to an array of rectCount
VkClearRect structures"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdClearAttachments-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdClearAttachments-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
"text": " rectCount
must be greater than 0
"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, each attachment to be cleared must not be a protected image"
},
{
"vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, each attachment to be cleared must not be an unprotected image"
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
"text": " If the render pass instance this is recorded in uses multiview, then baseArrayLayer
must be zero and layerCount
must be one"
}
]
},
"VkClearAttachment": {
"core": [
{
"vuid": "VUID-VkClearAttachment-aspectMask-00019",
"text": " If aspectMask
includes VK_IMAGE_ASPECT_COLOR_BIT
, it must not include VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkClearAttachment-aspectMask-00020",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkClearAttachment-clearValue-00021",
"text": " clearValue
must be a valid VkClearValue
union"
},
{
"vuid": "VUID-VkClearAttachment-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkClearAttachment-aspectMask-02246",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
for any index i"
}
]
},
"VkClearDepthStencilValue": {
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkClearDepthStencilValue-depth-00022",
"text": " Unless the VK_EXT_depth_range_unrestricted
extension is enabled depth
must be between 0.0
and 1.0
, inclusive"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkClearDepthStencilValue-depth-02506",
"text": " depth
must be between 0.0
and 1.0
, inclusive"
}
]
},
"vkCmdFillBuffer": {
"core": [
{
"vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
"text": " dstOffset
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
"text": " dstOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdFillBuffer-size-00026",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdFillBuffer-size-00027",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be less than or equal to the size of dstBuffer
minus dstOffset
"
},
{
"vuid": "VUID-vkCmdFillBuffer-size-00028",
"text": " If size
is not equal to VK_WHOLE_SIZE
, size
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics or compute operations"
},
{
"vuid": "VUID-vkCmdFillBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdFillBuffer-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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 and protectedNoFault
is not supported, dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstBuffer
must not be an unprotected buffer"
}
]
},
"vkCmdUpdateBuffer": {
"core": [
{
"vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
"text": " dstOffset
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
"text": " dataSize
must be less than or equal to the size of dstBuffer
minus dstOffset
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
"text": " dstOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
"text": " dataSize
must be less than or equal to 65536
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
"text": " dataSize
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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 and protectedNoFault
is not supported, dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstBuffer
must not be an unprotected buffer"
}
]
},
"vkCmdCopyBuffer": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstBuffer
must not be an unprotected buffer"
}
],
"core": [
{
"vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
"text": " The srcOffset
member of each element of pRegions
must be less than the size of srcBuffer
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
"text": " The dstOffset
member of each element of pRegions
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-size-00115",
"text": " The size
member of each element of pRegions
must be less than or equal to the size of srcBuffer
minus srcOffset
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-size-00116",
"text": " The size
member of each element of pRegions
must be less than or equal to the size of dstBuffer
minus dstOffset
"
},
{
"vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
"text": " The union of the source regions, and the union of the destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
"text": " srcBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
"text": " If srcBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferCopy structures"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyBuffer-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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"
}
]
},
"VkBufferCopy": {
"core": [
{
"vuid": "VUID-VkBufferCopy-size-01988",
"text": " The size
must be greater than 0
"
}
]
},
"vkCmdCopyBuffer2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-01822",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-01823",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-01824",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstBuffer
must not be an unprotected buffer"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-pCopyBufferInfo-parameter",
"text": " pCopyBufferInfo
must be a valid pointer to a valid VkCopyBufferInfo2 structure"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyBuffer2-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyBufferInfo2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkCopyBufferInfo2-srcOffset-00113",
"text": " The srcOffset
member of each element of pRegions
must be less than the size of srcBuffer
"
},
{
"vuid": "VUID-VkCopyBufferInfo2-dstOffset-00114",
"text": " The dstOffset
member of each element of pRegions
must be less than the size of dstBuffer
"
},
{
"vuid": "VUID-VkCopyBufferInfo2-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-VkCopyBufferInfo2-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-VkCopyBufferInfo2-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-VkCopyBufferInfo2-srcBuffer-00118",
"text": " srcBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyBufferInfo2-srcBuffer-00119",
"text": " If srcBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyBufferInfo2-dstBuffer-00120",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyBufferInfo2-dstBuffer-00121",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyBufferInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2
"
},
{
"vuid": "VUID-VkCopyBufferInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyBufferInfo2-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkCopyBufferInfo2-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkCopyBufferInfo2-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferCopy2 structures"
},
{
"vuid": "VUID-VkCopyBufferInfo2-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCopyBufferInfo2-commonparent",
"text": " Both of dstBuffer
, and srcBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkBufferCopy2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkBufferCopy2-size-01988",
"text": " The size
must be greater than 0
"
},
{
"vuid": "VUID-VkBufferCopy2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_COPY_2
"
},
{
"vuid": "VUID-VkBufferCopy2-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCmdCopyImage": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"core": [
{
"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-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-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-aspectMask-00142",
"text": " For each element of pRegions
, srcSubresource.aspectMask
must specify aspects present in srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-aspectMask-00143",
"text": " For each element of pRegions
, dstSubresource.aspectMask
must specify aspects present in dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcOffset-00144",
"text": " For each element of pRegions
, srcOffset.x
and (extent.width
+ srcOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcOffset-00145",
"text": " For each element of pRegions
, srcOffset.y
and (extent.height
+ srcOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00146",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcOffset-00147",
"text": " If srcImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcOffset.z
and (extent.depth
+ srcOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01785",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01786",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01787",
"text": " If srcImage
is of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, srcOffset.z
must be 0
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01788",
"text": " If dstImage
is of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, dstOffset.z
must be 0
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstOffset-00150",
"text": " For each element of pRegions
, dstOffset.x
and (extent.width
+ dstOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstOffset-00151",
"text": " For each element of pRegions
, dstOffset.y
and (extent.height
+ dstOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-00152",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstOffset-00153",
"text": " If dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, dstOffset.z
and (extent.depth
+ dstOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-07278",
"text": " For each element of pRegions
, srcOffset.x
must be a multiple of the texel block extent width of the VkFormat of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-07279",
"text": " For each element of pRegions
, srcOffset.y
must be a multiple of the texel block extent height of the VkFormat of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-07280",
"text": " For each element of pRegions
, srcOffset.z
must be a multiple of the texel block extent depth of the VkFormat of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-07281",
"text": " For each element of pRegions
, dstOffset.x
must be a multiple of the texel block extent width of the VkFormat of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-07282",
"text": " For each element of pRegions
, dstOffset.y
must be a multiple of the texel block extent height of the VkFormat of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-07283",
"text": " For each element of pRegions
, dstOffset.z
must be a multiple of the texel block extent depth of the VkFormat of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01728",
"text": " For each element of pRegions
, if the sum of srcOffset.x
and extent.width
does not equal the width of the the subresource specified by srcSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01729",
"text": " For each element of pRegions
, if the sum of srcOffset.y
and extent.height
does not equal the height of the the subresource specified by srcSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01730",
"text": " For each element of pRegions
, if the sum of srcOffset.z
and extent.depth
does not equal the depth of the the subresource specified by srcSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01732",
"text": " For each element of pRegions
, if the sum of dstOffset.x
and extent.width
does not equal the width of the the subresource specified by dstSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01733",
"text": " For each element of pRegions
, if the sum of dstOffset.y
and extent.height
does not equal the height of the the subresource specified by dstSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01734",
"text": " For each element of pRegions
, if the sum of dstOffset.z
and extent.depth
does not equal the depth of the the subresource specified by dstSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageCopy structures"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyImage-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01995",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01996",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-04443",
"text": " If srcImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
must be 0
and srcSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-04444",
"text": " If dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, dstSubresource.baseArrayLayer
must be 0
and dstSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01790",
"text": " If srcImage
and dstImage
are both of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, extent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01791",
"text": " If srcImage
is of type VK_IMAGE_TYPE_2D
, and dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, extent.depth
must equal srcSubresource.layerCount
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01792",
"text": " If dstImage
is of type VK_IMAGE_TYPE_2D
, and srcImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, extent.depth
must equal dstSubresource.layerCount
"
}
],
"!(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 size-compatible"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01546",
"text": " If srcImage
is non-sparse then the image or disjoint plane to be copied must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01547",
"text": " If dstImage
is non-sparse then the image or disjoint plane that is the destination of the copy must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01548",
"text": " If the VkFormat of each of srcImage
and dstImage
is not a multi-planar format, the VkFormat of each of srcImage
and dstImage
must be size-compatible"
},
{
"vuid": "VUID-vkCmdCopyImage-None-01549",
"text": " In a copy to or from a plane of a multi-planar image, the VkFormat of the image and plane must be compatible according to the description of compatible planes for the plane being copied"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01551",
"text": " If neither srcImage
nor dstImage
has a multi-planar image format then for each element of pRegions
, srcSubresource.aspectMask
and dstSubresource.aspectMask
must match"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01552",
"text": " If srcImage
has a VkFormat with two planes then for each element of pRegions
, srcSubresource.aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01553",
"text": " If srcImage
has a VkFormat with three planes then for each element of pRegions
, 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-vkCmdCopyImage-dstImage-01554",
"text": " If dstImage
has a VkFormat with two planes then for each element of pRegions
, dstSubresource.aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01555",
"text": " If dstImage
has a VkFormat with three planes then for each element of pRegions
, 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-vkCmdCopyImage-srcImage-01556",
"text": " If srcImage
has a multi-planar image format and the dstImage
does not have a multi-planar image format, then for each element of pRegions
, dstSubresource.aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-01557",
"text": " If dstImage
has a multi-planar image format and the srcImage
does not have a multi-planar image format, then for each element of pRegions
, srcSubresource.aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
}
],
"!(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_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdCopyImage-dstImage-02542",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00139",
"text": " If either srcImage
or dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
and dstSubresource.baseArrayLayer
must each be 0
, and srcSubresource.layerCount
and dstSubresource.layerCount
must each be 1
"
},
{
"vuid": "VUID-vkCmdCopyImage-srcImage-01789",
"text": " If srcImage
or dstImage
is of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, extent.depth
must be 1
"
}
],
"!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-vkCmdCopyImage-srcImage-00126",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyImage-dstImage-00131",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
}
],
"(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-vkCmdCopyImage-aspect-06662",
"text": " If the aspect
member of any element of pRegions
includes any flag other than VK_IMAGE_ASPECT_STENCIL_BIT
or srcImage
was not created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_SRC_BIT
must have been included in the VkImageCreateInfo::usage
used to create srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-aspect-06663",
"text": " If the aspect
member of any element of pRegions
includes any flag other than VK_IMAGE_ASPECT_STENCIL_BIT
or dstImage
was not created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageCreateInfo::usage
used to create dstImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-aspect-06664",
"text": " If the aspect
member of any element of pRegions
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and srcImage
was created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_SRC_BIT
must have been included in the VkImageStencilUsageCreateInfo::stencilUsage
used to create srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImage-aspect-06665",
"text": " If the aspect
member of any element of pRegions
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and dstImage
was created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageStencilUsageCreateInfo::stencilUsage
used to create dstImage
"
}
]
},
"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"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCopy-layerCount-00138",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
}
],
"(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)"
}
],
"core": [
{
"vuid": "VUID-VkImageCopy-extent-06668",
"text": " extent.width
must not be 0"
},
{
"vuid": "VUID-VkImageCopy-extent-06669",
"text": " extent.height
must not be 0"
},
{
"vuid": "VUID-VkImageCopy-extent-06670",
"text": " extent.depth
must not be 0"
},
{
"vuid": "VUID-VkImageCopy-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers structure"
},
{
"vuid": "VUID-VkImageCopy-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"VkImageSubresourceLayers": {
"core": [
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
"text": " If aspectMask
contains VK_IMAGE_ASPECT_COLOR_BIT
, it must not contain either of VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
"text": " aspectMask
must not contain VK_IMAGE_ASPECT_METADATA_BIT
"
},
{
"vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
"text": " layerCount
must be greater than 0"
},
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
"text": " aspectMask
must be a valid combination of VkImageAspectFlagBits values"
},
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
"text": " aspectMask
must not be 0
"
}
],
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
"text": " aspectMask
must not include VK_IMAGE_ASPECT_MEMORY_PLANE{ibit}BIT_EXT
for any index i"
}
]
},
"vkCmdCopyImage2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyImage2-commandBuffer-01825",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImage2-commandBuffer-01826",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImage2-commandBuffer-01827",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-vkCmdCopyImage2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyImage2-pCopyImageInfo-parameter",
"text": " pCopyImageInfo
must be a valid pointer to a valid VkCopyImageInfo2 structure"
},
{
"vuid": "VUID-vkCmdCopyImage2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyImage2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyImage2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyImage2-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyImageInfo2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-srcImage-00136",
"text": " The sample count of srcImage
and dstImage
must match"
},
{
"vuid": "VUID-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-aspectMask-00142",
"text": " For each element of pRegions
, srcSubresource.aspectMask
must specify aspects present in srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-aspectMask-00143",
"text": " For each element of pRegions
, dstSubresource.aspectMask
must specify aspects present in dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcOffset-00144",
"text": " For each element of pRegions
, srcOffset.x
and (extent.width
+ srcOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcOffset-00145",
"text": " For each element of pRegions
, srcOffset.y
and (extent.height
+ srcOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-00146",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcOffset-00147",
"text": " If srcImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcOffset.z
and (extent.depth
+ srcOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01785",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01786",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01787",
"text": " If srcImage
is of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, srcOffset.z
must be 0
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01788",
"text": " If dstImage
is of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, dstOffset.z
must be 0
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstOffset-00150",
"text": " For each element of pRegions
, dstOffset.x
and (extent.width
+ dstOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstOffset-00151",
"text": " For each element of pRegions
, dstOffset.y
and (extent.height
+ dstOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-00152",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstOffset-00153",
"text": " If dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, dstOffset.z
and (extent.depth
+ dstOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-07278",
"text": " For each element of pRegions
, srcOffset.x
must be a multiple of the texel block extent width of the VkFormat of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-07279",
"text": " For each element of pRegions
, srcOffset.y
must be a multiple of the texel block extent height of the VkFormat of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-07280",
"text": " For each element of pRegions
, srcOffset.z
must be a multiple of the texel block extent depth of the VkFormat of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-07281",
"text": " For each element of pRegions
, dstOffset.x
must be a multiple of the texel block extent width of the VkFormat of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-07282",
"text": " For each element of pRegions
, dstOffset.y
must be a multiple of the texel block extent height of the VkFormat of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-07283",
"text": " For each element of pRegions
, dstOffset.z
must be a multiple of the texel block extent depth of the VkFormat of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01728",
"text": " For each element of pRegions
, if the sum of srcOffset.x
and extent.width
does not equal the width of the the subresource specified by srcSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01729",
"text": " For each element of pRegions
, if the sum of srcOffset.y
and extent.height
does not equal the height of the the subresource specified by srcSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01730",
"text": " For each element of pRegions
, if the sum of srcOffset.z
and extent.depth
does not equal the depth of the the subresource specified by srcSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01732",
"text": " For each element of pRegions
, if the sum of dstOffset.x
and extent.width
does not equal the width of the the subresource specified by dstSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01733",
"text": " For each element of pRegions
, if the sum of dstOffset.y
and extent.height
does not equal the height of the the subresource specified by dstSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01734",
"text": " For each element of pRegions
, if the sum of dstOffset.z
and extent.depth
does not equal the depth of the the subresource specified by dstSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2
"
},
{
"vuid": "VUID-VkCopyImageInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkCopyImageInfo2-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageCopy2 structures"
},
{
"vuid": "VUID-VkCopyImageInfo2-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCopyImageInfo2-commonparent",
"text": " Both of dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01995",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01996",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-04443",
"text": " If srcImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
must be 0
and srcSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-04444",
"text": " If dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, dstSubresource.baseArrayLayer
must be 0
and dstSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01790",
"text": " If srcImage
and dstImage
are both of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, extent.depth
must be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01791",
"text": " If srcImage
is of type VK_IMAGE_TYPE_2D
, and dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, extent.depth
must equal srcSubresource.layerCount
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01792",
"text": " If dstImage
is of type VK_IMAGE_TYPE_2D
, and srcImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, extent.depth
must equal dstSubresource.layerCount
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-00127",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-00132",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-00135",
"text": " The VkFormat of each of srcImage
and dstImage
must be size-compatible"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkCopyImageInfo2-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-VkCopyImageInfo2-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-VkCopyImageInfo2-srcImage-01548",
"text": " If the VkFormat of each of srcImage
and dstImage
is not a multi-planar format, the VkFormat of each of srcImage
and dstImage
must be size-compatible"
},
{
"vuid": "VUID-VkCopyImageInfo2-None-01549",
"text": " In a copy to or from a plane of a multi-planar image, the VkFormat of the image and plane must be compatible according to the description of compatible planes for the plane being copied"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01551",
"text": " If neither srcImage
nor dstImage
has a multi-planar image format then for each element of pRegions
, srcSubresource.aspectMask
and dstSubresource.aspectMask
must match"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01552",
"text": " If srcImage
has a VkFormat with two planes then for each element of pRegions
, srcSubresource.aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01553",
"text": " If srcImage
has a VkFormat with three planes then for each element of pRegions
, 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-VkCopyImageInfo2-dstImage-01554",
"text": " If dstImage
has a VkFormat with two planes then for each element of pRegions
, dstSubresource.aspectMask
must be VK_IMAGE_ASPECT_PLANE_0_BIT
or VK_IMAGE_ASPECT_PLANE_1_BIT
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01555",
"text": " If dstImage
has a VkFormat with three planes then for each element of pRegions
, 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-VkCopyImageInfo2-srcImage-01556",
"text": " If srcImage
has a multi-planar image format and the dstImage
does not have a multi-planar image format, then for each element of pRegions
, dstSubresource.aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-01557",
"text": " If dstImage
has a multi-planar image format and the srcImage
does not have a multi-planar image format, then for each element of pRegions
, srcSubresource.aspectMask
must be VK_IMAGE_ASPECT_COLOR_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkCopyImageInfo2-srcImageLayout-00129",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImageLayout-00134",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkCopyImageInfo2-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-VkCopyImageInfo2-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_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-02542",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-00139",
"text": " If either srcImage
or dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
and dstSubresource.baseArrayLayer
must each be 0
, and srcSubresource.layerCount
and dstSubresource.layerCount
must each be 1
"
},
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-01789",
"text": " If srcImage
or dstImage
is of type VK_IMAGE_TYPE_2D
, then for each element of pRegions
, extent.depth
must be 1
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkCopyImageInfo2-srcImage-00126",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyImageInfo2-dstImage-00131",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [
{
"vuid": "VUID-VkCopyImageInfo2-aspect-06662",
"text": " If the aspect
member of any element of pRegions
includes any flag other than VK_IMAGE_ASPECT_STENCIL_BIT
or srcImage
was not created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_SRC_BIT
must have been included in the VkImageCreateInfo::usage
used to create srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-aspect-06663",
"text": " If the aspect
member of any element of pRegions
includes any flag other than VK_IMAGE_ASPECT_STENCIL_BIT
or dstImage
was not created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageCreateInfo::usage
used to create dstImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-aspect-06664",
"text": " If the aspect
member of any element of pRegions
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and srcImage
was created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_SRC_BIT
must have been included in the VkImageStencilUsageCreateInfo::stencilUsage
used to create srcImage
"
},
{
"vuid": "VUID-VkCopyImageInfo2-aspect-06665",
"text": " If the aspect
member of any element of pRegions
includes VK_IMAGE_ASPECT_STENCIL_BIT
, and dstImage
was created with separate stencil usage, VK_IMAGE_USAGE_TRANSFER_DST_BIT
must have been included in the VkImageStencilUsageCreateInfo::stencilUsage
used to create dstImage
"
}
]
},
"VkImageCopy2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkImageCopy2-aspectMask-00137",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must match"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCopy2-layerCount-00138",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkImageCopy2-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)"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkImageCopy2-extent-06668",
"text": " extent.width
must not be 0"
},
{
"vuid": "VUID-VkImageCopy2-extent-06669",
"text": " extent.height
must not be 0"
},
{
"vuid": "VUID-VkImageCopy2-extent-06670",
"text": " extent.depth
must not be 0"
},
{
"vuid": "VUID-VkImageCopy2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_COPY_2
"
},
{
"vuid": "VUID-VkImageCopy2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageCopy2-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers structure"
},
{
"vuid": "VUID-VkImageCopy2-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"vkCmdCopyBufferToImage": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"core": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-06217",
"text": " The image region specified by each element of pRegions
must be contained within the specified imageSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
"text": " srcBuffer
must be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element of pRegions
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-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-04477",
"text": " If the queue family used to create the VkCommandPool which commandBuffer
was allocated from does not support VK_QUEUE_GRAPHICS_BIT
, for each element of pRegions
, the aspectMask
member of imageSubresource
must not be VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-06218",
"text": " For each element of pRegions
, imageOffset.x
and (imageExtent.width
+ imageOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified imageSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-06219",
"text": " For each element of pRegions
, imageOffset.y
and (imageExtent.height
+ imageOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified imageSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00199",
"text": " If pname:dstImage is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, imageOffset.y
must be 0
and imageExtent.height
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00200",
"text": " For each element of pRegions
, imageOffset.z
and (imageExtent.depth
+ imageOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified imageSubresource
of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00201",
"text": " If pname:dstImage is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, imageOffset.z
must be 0
and imageExtent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-bufferRowLength-00203",
"text": " For each element of pRegions
, bufferRowLength
must be a multiple of the texel block extent width of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204",
"text": " For each element of pRegions
, bufferImageHeight
must be a multiple of the texel block extent height of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07273",
"text": " For each element of pRegions
, bufferOffset
must be a multiple of the texel block size of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07274",
"text": " For each element of pRegions
, imageOffset.x
must be a multiple of the texel block extent width of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07275",
"text": " For each element of pRegions
, imageOffset.y
must be a multiple of the texel block extent height of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07276",
"text": " For each element of pRegions
, imageOffset.z
must be a multiple of the texel block extent depth of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00207",
"text": " For each element of pRegions
, if the sum of imageOffset.x
and extent.width
does not equal the width of the the subresource specified by srcSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00208",
"text": " For each element of pRegions
, if the sum of imageOffset.y
and extent.height
does not equal the height of the the subresource specified by srcSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00209",
"text": " For each element of pRegions
, if the sum of imageOffset.z
and extent.depth
does not equal the depth of the the subresource specified by srcSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-00211",
"text": " For each element of pRegions
, imageSubresource.aspectMask
must specify aspects present in pname:dstImage"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213",
"text": " If pname:dstImage is of type VK_IMAGE_TYPE_3D
, for each element of pRegions
, imageSubresource.baseArrayLayer
must be 0
and imageSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-07277",
"text": " For each element of pRegions
, bufferRowLength
divided by the texel block extent width and then multiplied by the texel block size of pname:dstImage must be less than or equal to 231-1"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-04052",
"text": " If the queue family used to create the VkCommandPool which commandBuffer
was allocated from does not support VK_QUEUE_GRAPHICS_BIT
or VK_QUEUE_COMPUTE_BIT
, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcImage-04053",
"text": " If pname:dstImage has a depth/stencil format, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferImageCopy structures"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
"text": " dstImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-None-00214",
"text": " For each element of pRegions
whose imageSubresource
contains a depth aspect, the data in srcBuffer
must be in the range [0,1]"
}
],
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-00193",
"text": " If pname:dstImage does not have a depth/stencil format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01558",
"text": " If pname:dstImage does not have either a depth/stencil or a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01559",
"text": " If pname:dstImage has a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the element size of the compatible format for the format and the aspectMask
of the imageSubresource
as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-01560",
"text": " If pname:dstImage has a multi-planar format, then for each element of pRegions
, imageSubresource.aspectMask
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)"
}
]
},
"vkCmdCopyImageToBuffer": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstBuffer
must not be an unprotected buffer"
}
],
"core": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-06220",
"text": " The image region specified by each element of pRegions
must be contained within the specified imageSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
"text": " dstBuffer
must be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element of pRegions
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-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-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-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-pRegions-06221",
"text": " For each element of pRegions
, imageOffset.x
and (imageExtent.width
+ imageOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified imageSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-06222",
"text": " For each element of pRegions
, imageOffset.y
and (imageExtent.height + imageOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified imageSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00199",
"text": " If pname:srcImage is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, imageOffset.y
must be 0
and imageExtent.height
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00200",
"text": " For each element of pRegions
, imageOffset.z
and (imageExtent.depth
+ imageOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified imageSubresource
of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00201",
"text": " If pname:srcImage is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, imageOffset.z
must be 0
and imageExtent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203",
"text": " For each element of pRegions
, bufferRowLength
must be a multiple of the texel block extent width of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204",
"text": " For each element of pRegions
, bufferImageHeight
must be a multiple of the texel block extent height of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07273",
"text": " For each element of pRegions
, bufferOffset
must be a multiple of the texel block size of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07274",
"text": " For each element of pRegions
, imageOffset.x
must be a multiple of the texel block extent width of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07275",
"text": " For each element of pRegions
, imageOffset.y
must be a multiple of the texel block extent height of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07276",
"text": " For each element of pRegions
, imageOffset.z
must be a multiple of the texel block extent depth of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00207",
"text": " For each element of pRegions
, if the sum of imageOffset.x
and extent.width
does not equal the width of the the subresource specified by srcSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00208",
"text": " For each element of pRegions
, if the sum of imageOffset.y
and extent.height
does not equal the height of the the subresource specified by srcSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00209",
"text": " For each element of pRegions
, if the sum of imageOffset.z
and extent.depth
does not equal the depth of the the subresource specified by srcSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-00211",
"text": " For each element of pRegions
, imageSubresource.aspectMask
must specify aspects present in pname:srcImage"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213",
"text": " If pname:srcImage is of type VK_IMAGE_TYPE_3D
, for each element of pRegions
, imageSubresource.baseArrayLayer
must be 0
and imageSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-07277",
"text": " For each element of pRegions
, bufferRowLength
divided by the texel block extent width and then multiplied by the texel block size of pname:srcImage must be less than or equal to 231-1"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-04052",
"text": " If the queue family used to create the VkCommandPool which commandBuffer
was allocated from does not support VK_QUEUE_GRAPHICS_BIT
or VK_QUEUE_COMPUTE_BIT
, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-04053",
"text": " If pname:srcImage has a depth/stencil format, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferImageCopy structures"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
"text": " Each of commandBuffer
, dstBuffer
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
"
}
],
"!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
"text": " srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-00193",
"text": " If pname:srcImage does not have a depth/stencil format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01558",
"text": " If pname:srcImage does not have either a depth/stencil or a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01559",
"text": " If pname:srcImage has a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the element size of the compatible format for the format and the aspectMask
of the imageSubresource
as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-01560",
"text": " If pname:srcImage has a multi-planar format, then for each element of pRegions
, imageSubresource.aspectMask
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)"
}
]
},
"VkBufferImageCopy": {
"core": [
{
"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-aspectMask-00212",
"text": " The aspectMask
member of imageSubresource
must only have a single bit set"
},
{
"vuid": "VUID-VkBufferImageCopy-imageExtent-06659",
"text": " imageExtent.width
must not be 0"
},
{
"vuid": "VUID-VkBufferImageCopy-imageExtent-06660",
"text": " imageExtent.height
must not be 0"
},
{
"vuid": "VUID-VkBufferImageCopy-imageExtent-06661",
"text": " imageExtent.depth
must not be 0"
},
{
"vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
"text": " imageSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"vkCmdCopyBufferToImage2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-01828",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-01829",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-01830",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-pCopyBufferToImageInfo-parameter",
"text": " pCopyBufferToImageInfo
must be a valid pointer to a valid VkCopyBufferToImageInfo2 structure"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyBufferToImage2-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyBufferToImageInfo2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_QCOM_rotated_copy_commands)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-00172",
"text": " The image region specified by each element of pRegions
must be contained within the specified imageSubresource
of dstImage
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-04565",
"text": " If the image region specified by each element of pRegions
does not contain VkCopyCommandTransformInfoQCOM in its pNext
chain, it must be a region that is contained within the specified imageSubresource
of dstImage
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04554",
"text": " If the image region specified by each element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, the rotated destination region as described in [copies-buffers-images-rotation-addressing] must be contained within dstImage
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-04555",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then dstImage
must have a 1x1x1 texel block extent"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-06203",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then dstImage
must be of type VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-06204",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then dstImage
must not have a multi-planar format"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-00171",
"text": " srcBuffer
must be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element of pRegions
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-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-VkCopyBufferToImageInfo2-srcBuffer-00174",
"text": " srcBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-srcBuffer-00176",
"text": " If srcBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00177",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00178",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-00179",
"text": " dstImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-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-VkCopyBufferToImageInfo2-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-VkCopyBufferToImageInfo2-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-VkCopyBufferToImageInfo2-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-VkCopyBufferToImageInfo2-commandBuffer-04477",
"text": " If the queue family used to create the VkCommandPool which commandBuffer
was allocated from does not support VK_QUEUE_GRAPHICS_BIT
, for each element of pRegions
, the aspectMask
member of imageSubresource
must not be VK_IMAGE_ASPECT_DEPTH_BIT
or VK_IMAGE_ASPECT_STENCIL_BIT
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-06223",
"text": " For each element of pRegions
not containing VkCopyCommandTransformInfoQCOM
in its pNext
chain, imageOffset.x
and (imageExtent.width
+ imageOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified imageSubresource
of dstImage
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-06224",
"text": " For each element of pRegions
not containing VkCopyCommandTransformInfoQCOM
in its pNext
chain, imageOffset.y
and (imageExtent.height
+ imageOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified imageSubresource
of dstImage
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-srcImage-00199",
"text": " If pname:dstImage is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, imageOffset.y
must be 0
and imageExtent.height
must be 1
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-imageOffset-00200",
"text": " For each element of pRegions
, imageOffset.z
and (imageExtent.depth
+ imageOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified imageSubresource
of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-srcImage-00201",
"text": " If pname:dstImage is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, imageOffset.z
must be 0
and imageExtent.depth
must be 1
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-bufferRowLength-00203",
"text": " For each element of pRegions
, bufferRowLength
must be a multiple of the texel block extent width of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-bufferImageHeight-00204",
"text": " For each element of pRegions
, bufferImageHeight
must be a multiple of the texel block extent height of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07273",
"text": " For each element of pRegions
, bufferOffset
must be a multiple of the texel block size of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07274",
"text": " For each element of pRegions
, imageOffset.x
must be a multiple of the texel block extent width of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07275",
"text": " For each element of pRegions
, imageOffset.y
must be a multiple of the texel block extent height of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07276",
"text": " For each element of pRegions
, imageOffset.z
must be a multiple of the texel block extent depth of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-imageExtent-00207",
"text": " For each element of pRegions
, if the sum of imageOffset.x
and extent.width
does not equal the width of the the subresource specified by srcSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-imageExtent-00208",
"text": " For each element of pRegions
, if the sum of imageOffset.y
and extent.height
does not equal the height of the the subresource specified by srcSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-imageExtent-00209",
"text": " For each element of pRegions
, if the sum of imageOffset.z
and extent.depth
does not equal the depth of the the subresource specified by srcSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-aspectMask-00211",
"text": " For each element of pRegions
, imageSubresource.aspectMask
must specify aspects present in pname:dstImage"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-baseArrayLayer-00213",
"text": " If pname:dstImage is of type VK_IMAGE_TYPE_3D
, for each element of pRegions
, imageSubresource.baseArrayLayer
must be 0
and imageSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-07277",
"text": " For each element of pRegions
, bufferRowLength
divided by the texel block extent width and then multiplied by the texel block size of pname:dstImage must be less than or equal to 231-1"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-commandBuffer-04052",
"text": " If the queue family used to create the VkCommandPool which commandBuffer
was allocated from does not support VK_QUEUE_GRAPHICS_BIT
or VK_QUEUE_COMPUTE_BIT
, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-srcImage-04053",
"text": " If pname:dstImage has a depth/stencil format, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferImageCopy2 structures"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-commonparent",
"text": " Both of dstImage
, and srcBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-01997",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImageLayout-00181",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-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_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-dstImage-02543",
"text": " dstImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-None-00214",
"text": " For each element of pRegions
whose imageSubresource
contains a depth aspect, the data in srcBuffer
must be in the range [0,1]"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-bufferOffset-00193",
"text": " If pname:dstImage does not have a depth/stencil format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkCopyBufferToImageInfo2-bufferOffset-01558",
"text": " If pname:dstImage does not have either a depth/stencil or a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-bufferOffset-01559",
"text": " If pname:dstImage has a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the element size of the compatible format for the format and the aspectMask
of the imageSubresource
as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-VkCopyBufferToImageInfo2-aspectMask-01560",
"text": " If pname:dstImage has a multi-planar format, then for each element of pRegions
, imageSubresource.aspectMask
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)"
}
]
},
"vkCmdCopyImageToBuffer2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-01831",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-01832",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstBuffer
must not be a protected buffer"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-01833",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstBuffer
must not be an unprotected buffer"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-pCopyImageToBufferInfo-parameter",
"text": " pCopyImageToBufferInfo
must be a valid pointer to a valid VkCopyImageToBufferInfo2 structure"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyImageToBuffer2-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyImageToBufferInfo2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_QCOM_rotated_copy_commands)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-00182",
"text": " The image region specified by each element of pRegions
must be contained within the specified imageSubresource
of srcImage
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-04566",
"text": " If the image region specified by each element of pRegions
does not contain VkCopyCommandTransformInfoQCOM in its pNext
chain, it must be contained within the specified imageSubresource
of srcImage
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04557",
"text": " If the image region specified by each element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, the rotated source region as described in [copies-buffers-images-rotation-addressing] must be contained within srcImage
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-04558",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then srcImage
must have a 1x1x1 texel block extent"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-06205",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then srcImage
must be of type VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-06206",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then srcImage
must not have a multi-planar format"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-00183",
"text": " dstBuffer
must be large enough to contain all buffer locations that are accessed according to Buffer and Image Addressing, for each element of pRegions
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-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-VkCopyImageToBufferInfo2-srcImage-00186",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00187",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-dstBuffer-00191",
"text": " dstBuffer
must have been created with VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-dstBuffer-00192",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00188",
"text": " srcImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-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-VkCopyImageToBufferInfo2-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-VkCopyImageToBufferInfo2-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-VkCopyImageToBufferInfo2-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-VkCopyImageToBufferInfo2-imageOffset-00197",
"text": " For each element of pRegions
not containing VkCopyCommandTransformInfoQCOM
in its pNext
chain, imageOffset.x
and (imageExtent.width
+ imageOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified imageSubresource
of srcImage
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-00198",
"text": " For each element of pRegions
not containing VkCopyCommandTransformInfoQCOM
in its pNext
chain, imageOffset.y
and (imageExtent.height
+ imageOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified imageSubresource
of srcImage
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00199",
"text": " If pname:srcImage is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, imageOffset.y
must be 0
and imageExtent.height
must be 1
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-imageOffset-00200",
"text": " For each element of pRegions
, imageOffset.z
and (imageExtent.depth
+ imageOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified imageSubresource
of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-00201",
"text": " If pname:srcImage is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, imageOffset.z
must be 0
and imageExtent.depth
must be 1
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-bufferRowLength-00203",
"text": " For each element of pRegions
, bufferRowLength
must be a multiple of the texel block extent width of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-bufferImageHeight-00204",
"text": " For each element of pRegions
, bufferImageHeight
must be a multiple of the texel block extent height of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07273",
"text": " For each element of pRegions
, bufferOffset
must be a multiple of the texel block size of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07274",
"text": " For each element of pRegions
, imageOffset.x
must be a multiple of the texel block extent width of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07275",
"text": " For each element of pRegions
, imageOffset.y
must be a multiple of the texel block extent height of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07276",
"text": " For each element of pRegions
, imageOffset.z
must be a multiple of the texel block extent depth of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-imageExtent-00207",
"text": " For each element of pRegions
, if the sum of imageOffset.x
and extent.width
does not equal the width of the the subresource specified by srcSubresource
, extent.width
must be a multiple of the texel block extent width of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-imageExtent-00208",
"text": " For each element of pRegions
, if the sum of imageOffset.y
and extent.height
does not equal the height of the the subresource specified by srcSubresource
, extent.height
must be a multiple of the texel block extent height of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-imageExtent-00209",
"text": " For each element of pRegions
, if the sum of imageOffset.z
and extent.depth
does not equal the depth of the the subresource specified by srcSubresource
, extent.depth
must be a multiple of the texel block extent depth of the VkFormat of pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-aspectMask-00211",
"text": " For each element of pRegions
, imageSubresource.aspectMask
must specify aspects present in pname:srcImage"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-baseArrayLayer-00213",
"text": " If pname:srcImage is of type VK_IMAGE_TYPE_3D
, for each element of pRegions
, imageSubresource.baseArrayLayer
must be 0
and imageSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-07277",
"text": " For each element of pRegions
, bufferRowLength
divided by the texel block extent width and then multiplied by the texel block size of pname:srcImage must be less than or equal to 231-1"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-commandBuffer-04052",
"text": " If the queue family used to create the VkCommandPool which commandBuffer
was allocated from does not support VK_QUEUE_GRAPHICS_BIT
or VK_QUEUE_COMPUTE_BIT
, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-04053",
"text": " If pname:srcImage has a depth/stencil format, the bufferOffset
member of any element of pRegions
must be a multiple of 4
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkBufferImageCopy2 structures"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-commonparent",
"text": " Both of dstBuffer
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-01998",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImageLayout-00190",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImageLayout-01397",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
, VK_IMAGE_LAYOUT_GENERAL
, or VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-srcImage-02544",
"text": " srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-bufferOffset-00193",
"text": " If pname:srcImage does not have a depth/stencil format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkCopyImageToBufferInfo2-bufferOffset-01558",
"text": " If pname:srcImage does not have either a depth/stencil or a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the format’s texel block size"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-bufferOffset-01559",
"text": " If pname:srcImage has a multi-planar format, then for each element of pRegions
, bufferOffset
must be a multiple of the element size of the compatible format for the format and the aspectMask
of the imageSubresource
as defined in Compatible formats of planes of multi-planar formats"
},
{
"vuid": "VUID-VkCopyImageToBufferInfo2-aspectMask-01560",
"text": " If pname:srcImage has a multi-planar format, then for each element of pRegions
, imageSubresource.aspectMask
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)"
}
]
},
"VkBufferImageCopy2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkBufferImageCopy2-bufferRowLength-00195",
"text": " bufferRowLength
must be 0
, or greater than or equal to the width
member of imageExtent
"
},
{
"vuid": "VUID-VkBufferImageCopy2-bufferImageHeight-00196",
"text": " bufferImageHeight
must be 0
, or greater than or equal to the height
member of imageExtent
"
},
{
"vuid": "VUID-VkBufferImageCopy2-aspectMask-00212",
"text": " The aspectMask
member of imageSubresource
must only have a single bit set"
},
{
"vuid": "VUID-VkBufferImageCopy2-imageExtent-06659",
"text": " imageExtent.width
must not be 0"
},
{
"vuid": "VUID-VkBufferImageCopy2-imageExtent-06660",
"text": " imageExtent.height
must not be 0"
},
{
"vuid": "VUID-VkBufferImageCopy2-imageExtent-06661",
"text": " imageExtent.depth
must not be 0"
},
{
"vuid": "VUID-VkBufferImageCopy2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2
"
},
{
"vuid": "VUID-VkBufferImageCopy2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkCopyCommandTransformInfoQCOM"
},
{
"vuid": "VUID-VkBufferImageCopy2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkBufferImageCopy2-imageSubresource-parameter",
"text": " imageSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"VkCopyCommandTransformInfoQCOM": {
"(VK_QCOM_rotated_copy_commands)": [
{
"vuid": "VUID-VkCopyCommandTransformInfoQCOM-transform-04560",
"text": " transform
must be VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
, VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR
, VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR
, or VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR
"
},
{
"vuid": "VUID-VkCopyCommandTransformInfoQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM
"
}
]
},
"vkCmdBlitImage": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"core": [
{
"vuid": "VUID-vkCmdBlitImage-pRegions-00215",
"text": " The source region specified by each element of pRegions
must be a region that is contained within srcImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-pRegions-00216",
"text": " The destination region specified by each element of pRegions
must be a region that is contained within dstImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-pRegions-00217",
"text": " The union of all destination regions, specified by the elements of pRegions
, must not overlap in memory with any texel that may be sampled during the blit operation"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-01999",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_BLIT_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00219",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00220",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
"text": " srcImageLayout
must specify the layout of the image subresources of srcImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-02000",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_BLIT_DST_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00224",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00225",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
"text": " dstImageLayout
must specify the layout of the image subresources of dstImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00229",
"text": " If either of srcImage
or dstImage
was created with a signed integer VkFormat, the other must also have been created with a signed integer VkFormat"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00230",
"text": " If either of srcImage
or dstImage
was created with an unsigned integer VkFormat, the other must also have been created with an unsigned integer VkFormat"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00231",
"text": " If either of srcImage
or dstImage
was created with a depth/stencil format, the other must have exactly the same format"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00232",
"text": " If srcImage
was created with a depth/stencil format, filter
must be VK_FILTER_NEAREST
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00233",
"text": " srcImage
must have been created with a samples
value of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00234",
"text": " dstImage
must have been created with a samples
value of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-02001",
"text": " If filter
is VK_FILTER_LINEAR
, then the format features of srcImage
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
"text": " The srcSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
"text": " The dstSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
"text": " The srcSubresource.baseArrayLayer
+ srcSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
"text": " The dstSubresource.baseArrayLayer
+ dstSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00240",
"text": " If either srcImage
or dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
and dstSubresource.baseArrayLayer
must each be 0
, and srcSubresource.layerCount
and dstSubresource.layerCount
must each be 1
"
},
{
"vuid": "VUID-vkCmdBlitImage-aspectMask-00241",
"text": " For each element of pRegions
, srcSubresource.aspectMask
must specify aspects present in srcImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-aspectMask-00242",
"text": " For each element of pRegions
, dstSubresource.aspectMask
must specify aspects present in dstImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcOffset-00243",
"text": " For each element of pRegions
, srcOffsets
[0].x and srcOffsets
[1].x must both be greater than or equal to 0
and less than or equal to the width of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcOffset-00244",
"text": " For each element of pRegions
, srcOffsets
[0].y and srcOffsets
[1].y must both be greater than or equal to 0
and less than or equal to the height of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00245",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffsets
[0].y must be 0
and srcOffsets
[1].y must be 1
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcOffset-00246",
"text": " For each element of pRegions
, srcOffsets
[0].z and srcOffsets
[1].z must both be greater than or equal to 0
and less than or equal to the depth of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-00247",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, srcOffsets
[0].z must be 0
and srcOffsets
[1].z must be 1
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstOffset-00248",
"text": " For each element of pRegions
, dstOffsets
[0].x and dstOffsets
[1].x must both be greater than or equal to 0
and less than or equal to the width of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstOffset-00249",
"text": " For each element of pRegions
, dstOffsets
[0].y and dstOffsets
[1].y must both be greater than or equal to 0
and less than or equal to the height of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00250",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffsets
[0].y must be 0
and dstOffsets
[1].y must be 1
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstOffset-00251",
"text": " For each element of pRegions
, dstOffsets
[0].z and dstOffsets
[1].z must both be greater than or equal to 0
and less than or equal to the depth of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-00252",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, dstOffsets
[0].z must be 0
and dstOffsets
[1].z must be 1
"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageBlit structures"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-parameter",
"text": " filter
must be a valid VkFilter value"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBlitImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBlitImage-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBlitImage-commonparent",
"text": " Each of commandBuffer
, dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdBlitImage-srcImage-06421",
"text": " srcImage
must not use a format that requires a sampler {YCbCr} conversion"
},
{
"vuid": "VUID-vkCmdBlitImage-dstImage-06422",
"text": " dstImage
must not use a format that requires a 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_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdBlitImage-filter-02002",
"text": " If filter
is VK_FILTER_CUBIC_EXT
, then the format features of srcImage
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdBlitImage-filter-00237",
"text": " If filter
is VK_FILTER_CUBIC_EXT
, srcImage
must be of type VK_IMAGE_TYPE_2D
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdBlitImage-dstImage-02545",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
]
},
"VkImageBlit": {
"core": [
{
"vuid": "VUID-VkImageBlit-aspectMask-00238",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageBlit-layerCount-00239",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageBlit-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers structure"
},
{
"vuid": "VUID-VkImageBlit-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"vkCmdBlitImage2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdBlitImage2-commandBuffer-01834",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdBlitImage2-commandBuffer-01835",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdBlitImage2-commandBuffer-01836",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-vkCmdBlitImage2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBlitImage2-pBlitImageInfo-parameter",
"text": " pBlitImageInfo
must be a valid pointer to a valid VkBlitImageInfo2 structure"
},
{
"vuid": "VUID-vkCmdBlitImage2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBlitImage2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBlitImage2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBlitImage2-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkBlitImageInfo2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkBlitImageInfo2-pRegions-00215",
"text": " The source region specified by each element of pRegions
must be a region that is contained within srcImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-pRegions-00216",
"text": " The destination region specified by each element of pRegions
must be a region that is contained within dstImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-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-VkBlitImageInfo2-srcImage-01999",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_BLIT_SRC_BIT
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-00219",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-00220",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBlitImageInfo2-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-VkBlitImageInfo2-dstImage-02000",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_BLIT_DST_BIT
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-00224",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-00225",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBlitImageInfo2-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-VkBlitImageInfo2-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-VkBlitImageInfo2-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-VkBlitImageInfo2-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-VkBlitImageInfo2-srcImage-00232",
"text": " If srcImage
was created with a depth/stencil format, filter
must be VK_FILTER_NEAREST
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-00233",
"text": " srcImage
must have been created with a samples
value of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-00234",
"text": " dstImage
must have been created with a samples
value of VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkBlitImageInfo2-filter-02001",
"text": " If filter
is VK_FILTER_LINEAR
, then the format features of srcImage
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-VkBlitImageInfo2-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-VkBlitImageInfo2-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-VkBlitImageInfo2-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-VkBlitImageInfo2-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-VkBlitImageInfo2-srcImage-00240",
"text": " If either srcImage
or dstImage
is of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
and dstSubresource.baseArrayLayer
must each be 0
, and srcSubresource.layerCount
and dstSubresource.layerCount
must each be 1
"
},
{
"vuid": "VUID-VkBlitImageInfo2-aspectMask-00241",
"text": " For each element of pRegions
, srcSubresource.aspectMask
must specify aspects present in srcImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-aspectMask-00242",
"text": " For each element of pRegions
, dstSubresource.aspectMask
must specify aspects present in dstImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcOffset-00243",
"text": " For each element of pRegions
, srcOffsets
[0].x and srcOffsets
[1].x must both be greater than or equal to 0
and less than or equal to the width of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcOffset-00244",
"text": " For each element of pRegions
, srcOffsets
[0].y and srcOffsets
[1].y must both be greater than or equal to 0
and less than or equal to the height of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-00245",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffsets
[0].y must be 0
and srcOffsets
[1].y must be 1
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcOffset-00246",
"text": " For each element of pRegions
, srcOffsets
[0].z and srcOffsets
[1].z must both be greater than or equal to 0
and less than or equal to the depth of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-00247",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, srcOffsets
[0].z must be 0
and srcOffsets
[1].z must be 1
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstOffset-00248",
"text": " For each element of pRegions
, dstOffsets
[0].x and dstOffsets
[1].x must both be greater than or equal to 0
and less than or equal to the width of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstOffset-00249",
"text": " For each element of pRegions
, dstOffsets
[0].y and dstOffsets
[1].y must both be greater than or equal to 0
and less than or equal to the height of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-00250",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffsets
[0].y must be 0
and dstOffsets
[1].y must be 1
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstOffset-00251",
"text": " For each element of pRegions
, dstOffsets
[0].z and dstOffsets
[1].z must both be greater than or equal to 0
and less than or equal to the depth of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-00252",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, dstOffsets
[0].z must be 0
and dstOffsets
[1].z must be 1
"
},
{
"vuid": "VUID-VkBlitImageInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2
"
},
{
"vuid": "VUID-VkBlitImageInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkBlitImageInfo2-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkBlitImageInfo2-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageBlit2 structures"
},
{
"vuid": "VUID-VkBlitImageInfo2-filter-parameter",
"text": " filter
must be a valid VkFilter value"
},
{
"vuid": "VUID-VkBlitImageInfo2-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-VkBlitImageInfo2-commonparent",
"text": " Both of dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkBlitImageInfo2-srcImage-06421",
"text": " srcImage
must not use a format that requires a sampler {YCbCr} conversion"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-06422",
"text": " dstImage
must not use a format that requires a sampler {YCbCr} conversion"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkBlitImageInfo2-srcImageLayout-00222",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkBlitImageInfo2-dstImageLayout-00227",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkBlitImageInfo2-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-VkBlitImageInfo2-dstImageLayout-01399",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkBlitImageInfo2-filter-02002",
"text": " If filter
is VK_FILTER_CUBIC_EXT
, then the format features of srcImage
must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
},
{
"vuid": "VUID-VkBlitImageInfo2-filter-00237",
"text": " If filter
is VK_FILTER_CUBIC_EXT
, srcImage
must be of type VK_IMAGE_TYPE_2D
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkBlitImageInfo2-dstImage-02545",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_QCOM_rotated_copy_commands)": [
{
"vuid": "VUID-VkBlitImageInfo2-pRegions-04561",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then srcImage
and dstImage
must not be block-compressed images"
},
{
"vuid": "VUID-VkBlitImageInfo2KHR-pRegions-06207",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then srcImage
must be of type VK_IMAGE_TYPE_2D
"
},
{
"vuid": "VUID-VkBlitImageInfo2KHR-pRegions-06208",
"text": " If any element of pRegions
contains VkCopyCommandTransformInfoQCOM in its pNext
chain, then srcImage
must not have a multi-planar format"
}
]
},
"VkImageBlit2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkImageBlit2-aspectMask-00238",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageBlit2-layerCount-00239",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageBlit2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_BLIT_2
"
},
{
"vuid": "VUID-VkImageBlit2-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkCopyCommandTransformInfoQCOM"
},
{
"vuid": "VUID-VkImageBlit2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkImageBlit2-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers structure"
},
{
"vuid": "VUID-VkImageBlit2-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"vkCmdResolveImage": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"core": [
{
"vuid": "VUID-vkCmdResolveImage-pRegions-00255",
"text": " The union of all source regions, and the union of all destination regions, specified by the elements of pRegions
, must not overlap in memory"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-00256",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-00257",
"text": " srcImage
must have a sample count equal to any valid sample count value other than VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00258",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00259",
"text": " dstImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
"text": " srcImageLayout
must specify the layout of the image subresources of srcImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
"text": " dstImageLayout
must specify the layout of the image subresources of dstImage
specified in pRegions
at the time this command is executed on a VkDevice
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-02003",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-01386",
"text": " srcImage
and dstImage
must have been created with the same image format"
},
{
"vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
"text": " The srcSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
"text": " The dstSubresource.mipLevel
member of each element of pRegions
must be less than the mipLevels
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
"text": " The srcSubresource.baseArrayLayer
+ srcSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when srcImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
"text": " The dstSubresource.baseArrayLayer
+ dstSubresource.layerCount
of each element of pRegions
must be less than or equal to the arrayLayers
specified in VkImageCreateInfo when dstImage
was created"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-04446",
"text": " If either srcImage
or dstImage
are of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
must be 0
and srcSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-04447",
"text": " If either srcImage
or dstImage
are of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, dstSubresource.baseArrayLayer
must be 0
and dstSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcOffset-00269",
"text": " For each element of pRegions
, srcOffset.x
and (extent.width
+ srcOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcOffset-00270",
"text": " For each element of pRegions
, srcOffset.y
and (extent.height
+ srcOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-00271",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcOffset-00272",
"text": " For each element of pRegions
, srcOffset.z
and (extent.depth
+ srcOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-00273",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, srcOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstOffset-00274",
"text": " For each element of pRegions
, dstOffset.x
and (extent.width
+ dstOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstOffset-00275",
"text": " For each element of pRegions
, dstOffset.y
and (extent.height
+ dstOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00276",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstOffset-00277",
"text": " For each element of pRegions
, dstOffset.z
and (extent.depth
+ dstOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-00278",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, dstOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-06762",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-06764",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageResolve structures"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdResolveImage-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResolveImage-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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_NV_linear_color_attachment)": [
{
"vuid": "VUID-vkCmdResolveImage-linearColorAttachment-06519",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, the format features of dstImage
must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
}
],
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdResolveImage-dstImage-02546",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-vkCmdResolveImage-srcImage-06763",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-vkCmdResolveImage-dstImage-06765",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
}
]
},
"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-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers structure"
},
{
"vuid": "VUID-VkImageResolve-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"vkCmdResolveImage2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdResolveImage2-commandBuffer-01837",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, srcImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdResolveImage2-commandBuffer-01838",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, dstImage
must not be a protected image"
},
{
"vuid": "VUID-vkCmdResolveImage2-commandBuffer-01839",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, dstImage
must not be an unprotected image"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-vkCmdResolveImage2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdResolveImage2-pResolveImageInfo-parameter",
"text": " pResolveImageInfo
must be a valid pointer to a valid VkResolveImageInfo2 structure"
},
{
"vuid": "VUID-vkCmdResolveImage2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdResolveImage2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdResolveImage2-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdResolveImage2-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkResolveImageInfo2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkResolveImageInfo2-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-VkResolveImageInfo2-srcImage-00256",
"text": " If srcImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkResolveImageInfo2-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-VkResolveImageInfo2-dstImage-00258",
"text": " If dstImage
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-00259",
"text": " dstImage
must have a sample count equal to VK_SAMPLE_COUNT_1_BIT
"
},
{
"vuid": "VUID-VkResolveImageInfo2-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-VkResolveImageInfo2-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-VkResolveImageInfo2-dstImage-02003",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-01386",
"text": " srcImage
and dstImage
must have been created with the same image format"
},
{
"vuid": "VUID-VkResolveImageInfo2-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-VkResolveImageInfo2-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-VkResolveImageInfo2-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-VkResolveImageInfo2-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-VkResolveImageInfo2-srcImage-04446",
"text": " If either srcImage
or dstImage
are of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, srcSubresource.baseArrayLayer
must be 0
and srcSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-04447",
"text": " If either srcImage
or dstImage
are of type VK_IMAGE_TYPE_3D
, then for each element of pRegions
, dstSubresource.baseArrayLayer
must be 0
and dstSubresource.layerCount
must be 1
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcOffset-00269",
"text": " For each element of pRegions
, srcOffset.x
and (extent.width
+ srcOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcOffset-00270",
"text": " For each element of pRegions
, srcOffset.y
and (extent.height
+ srcOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-00271",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, srcOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcOffset-00272",
"text": " For each element of pRegions
, srcOffset.z
and (extent.depth
+ srcOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified srcSubresource
of srcImage
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-00273",
"text": " If srcImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, srcOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstOffset-00274",
"text": " For each element of pRegions
, dstOffset.x
and (extent.width
+ dstOffset.x
) must both be greater than or equal to 0
and less than or equal to the width of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstOffset-00275",
"text": " For each element of pRegions
, dstOffset.y
and (extent.height
+ dstOffset.y
) must both be greater than or equal to 0
and less than or equal to the height of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-00276",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
, then for each element of pRegions
, dstOffset.y
must be 0
and extent.height
must be 1
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstOffset-00277",
"text": " For each element of pRegions
, dstOffset.z
and (extent.depth
+ dstOffset.z
) must both be greater than or equal to 0
and less than or equal to the depth of the specified dstSubresource
of dstImage
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-00278",
"text": " If dstImage
is of type VK_IMAGE_TYPE_1D
or VK_IMAGE_TYPE_2D
, then for each element of pRegions
, dstOffset.z
must be 0
and extent.depth
must be 1
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-06762",
"text": " srcImage
must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT
usage flag"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-06764",
"text": " dstImage
must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-VkResolveImageInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2
"
},
{
"vuid": "VUID-VkResolveImageInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-parameter",
"text": " srcImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkResolveImageInfo2-srcImageLayout-parameter",
"text": " srcImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-parameter",
"text": " dstImage
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImageLayout-parameter",
"text": " dstImageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-VkResolveImageInfo2-pRegions-parameter",
"text": " pRegions
must be a valid pointer to an array of regionCount
valid VkImageResolve2 structures"
},
{
"vuid": "VUID-VkResolveImageInfo2-regionCount-arraylength",
"text": " regionCount
must be greater than 0
"
},
{
"vuid": "VUID-VkResolveImageInfo2-commonparent",
"text": " Both of dstImage
, and srcImage
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+!(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkResolveImageInfo2-srcImageLayout-00261",
"text": " srcImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImageLayout-00263",
"text": " dstImageLayout
must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL
or VK_IMAGE_LAYOUT_GENERAL
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkResolveImageInfo2-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-VkResolveImageInfo2-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_3,VK_KHR_copy_commands2)+(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkResolveImageInfo2-linearColorAttachment-06519",
"text": " If the linearColorAttachment
feature is enabled and the image is created with VK_IMAGE_TILING_LINEAR
, the format features of dstImage
must contain VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-02546",
"text": " dstImage
and srcImage
must not have been created with flags
containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_copy_commands2)+(VK_VERSION_1_1,VK_KHR_maintenance1)": [
{
"vuid": "VUID-VkResolveImageInfo2-srcImage-06763",
"text": " The format features of srcImage
must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT
"
},
{
"vuid": "VUID-VkResolveImageInfo2-dstImage-06765",
"text": " The format features of dstImage
must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT
"
}
]
},
"VkImageResolve2": {
"(VK_VERSION_1_3,VK_KHR_copy_commands2)": [
{
"vuid": "VUID-VkImageResolve2-aspectMask-00266",
"text": " The aspectMask
member of srcSubresource
and dstSubresource
must only contain VK_IMAGE_ASPECT_COLOR_BIT
"
},
{
"vuid": "VUID-VkImageResolve2-layerCount-00267",
"text": " The layerCount
member of srcSubresource
and dstSubresource
must match"
},
{
"vuid": "VUID-VkImageResolve2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2
"
},
{
"vuid": "VUID-VkImageResolve2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageResolve2-srcSubresource-parameter",
"text": " srcSubresource
must be a valid VkImageSubresourceLayers structure"
},
{
"vuid": "VUID-VkImageResolve2-dstSubresource-parameter",
"text": " dstSubresource
must be a valid VkImageSubresourceLayers structure"
}
]
},
"vkCmdWriteBufferMarker2AMD": {
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03929",
"text": " If the geometryShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03930",
"text": " If the tessellationShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-synchronization2-03893",
"text": " The synchronization2
feature must be enabled"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03894",
"text": " stage
must include only a single pipeline stage"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03895",
"text": " stage
must include only stages that are valid for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03896",
"text": " dstOffset
must be less than or equal to the size of dstBuffer
minus 4
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03897",
"text": " dstBuffer
must have been created with the VK_BUFFER_USAGE_TRANSFER_DST_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-03898",
"text": " If dstBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstOffset-03899",
"text": " dstOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-parameter",
"text": " stage
must be a valid combination of VkPipelineStageFlagBits2 values"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-commonparent",
"text": " Both of commandBuffer
, and dstBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03931",
"text": " If the conditionalRendering
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03932",
"text": " If the fragmentDensityMap
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03933",
"text": " If the transformFeedback
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03934",
"text": " If the meshShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-03935",
"text": " If the taskShader
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-04956",
"text": " If the shadingRateImage
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-shadingRateImage-07316",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-fragmentShadingRate-07317",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-04957",
"text": " If the subpassShading
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-vkCmdWriteBufferMarker2AMD-stage-04995",
"text": " If the invocationMask
feature is not enabled, pname:stage must not contain VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI
"
}
]
},
"vkCmdWriteBufferMarkerAMD": {
"(VK_AMD_buffer_marker)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074",
"text": " pipelineStage
must be a valid stage for the queue family that was used to create the command pool that commandBuffer
was allocated from"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075",
"text": " If the geometryShader
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076",
"text": " If the tessellationShader
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
"
},
{
"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": " If pipelineStage
is not 0
, pipelineStage
must be a valid VkPipelineStageFlagBits value"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
"text": " dstBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support transfer, graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
"text": " Both of commandBuffer
, and dstBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_AMD_buffer_marker)+(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077",
"text": " If the conditionalRendering
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078",
"text": " If the fragmentDensityMap
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079",
"text": " If the transformFeedback
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080",
"text": " If the meshShader
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-07077",
"text": " If the task shaders feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT
"
}
],
"(VK_AMD_buffer_marker)+(VK_NV_shading_rate_image)+!(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081",
"text": " If the shadingRateImage
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV
"
}
],
"(VK_AMD_buffer_marker)+(VK_KHR_fragment_shading_rate)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-shadingRateImage-07314",
"text": " If neither the shadingRateImage
or attachmentFragmentShadingRate
are enabled, pipelineStage
must not be VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_AMD_buffer_marker)+(VK_KHR_fragment_shading_rate)+!(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-fragmentShadingRate-07315",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_AMD_buffer_marker)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-synchronization2-06489",
"text": " If the synchronization2
feature is not enabled, pipelineStage
must not be VK_PIPELINE_STAGE_NONE
"
}
],
"(VK_AMD_buffer_marker)+!(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-06490",
"text": " pipelineStage
must not be VK_PIPELINE_STAGE_NONE
"
}
]
},
"VkPipelineInputAssemblyStateCreateInfo": {
"!(VK_EXT_primitive_topology_list_restart)": [
{
"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
"
}
],
"(VK_EXT_primitive_topology_list_restart)": [
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06252",
"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
or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
, and primitiveRestartEnable
is VK_TRUE
, the primitiveTopologyListRestart
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-06253",
"text": " If topology
is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
, and primitiveRestartEnable
is VK_TRUE
, the primitiveTopologyPatchListRestart
feature must be enabled"
}
],
"core": [
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
"text": " If the geometryShader
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 tessellationShader
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"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::triangleFans
is VK_FALSE
, topology
must not be VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
"
}
]
},
"vkCmdSetPrimitiveRestartEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetPrimitiveRestartEnable-None-04866",
"text": " The extendedDynamicState2
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPrimitiveRestartEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetPrimitiveRestartEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetPrimitiveTopology": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetPrimitiveTopology-None-03347",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetPrimitiveTopology-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPrimitiveTopology-primitiveTopology-parameter",
"text": " primitiveTopology
must be a valid VkPrimitiveTopology value"
},
{
"vuid": "VUID-vkCmdSetPrimitiveTopology-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPrimitiveTopology-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetPrimitiveTopology-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdBindIndexBuffer": {
"core": [
{
"vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
"text": " offset
must be less than the size of buffer
"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
"text": " The sum of offset
and the address of the range of VkDeviceMemory
object that is backing buffer
, must be a multiple of the type indicated by indexType
"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDEX_BUFFER_BIT
flag"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
"text": " indexType
must not be VK_INDEX_TYPE_NONE_KHR
"
}
],
"(VK_EXT_index_type_uint8)": [
{
"vuid": "VUID-vkCmdBindIndexBuffer-indexType-02765",
"text": " If indexType
is VK_INDEX_TYPE_UINT8_EXT
, the indexTypeUint8
feature must be enabled"
}
]
},
"vkCmdDraw": {
"core": [
{
"vuid": "VUID-vkCmdDraw-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDraw-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDraw-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDraw-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDraw-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDraw-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDraw-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDraw-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDraw-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDraw-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDraw-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDraw-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDraw-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDraw-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDraw-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDraw-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDraw-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDraw-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDraw-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDraw-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDraw-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDraw-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDraw-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDraw-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDraw-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDraw-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDraw-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDraw-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDraw-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDraw-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDraw-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDraw-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDraw-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDraw-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDraw-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDraw-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point used by this command must not write to any resource"
},
{
"vuid": "VUID-vkCmdDraw-commandBuffer-04617",
"text": " If any of the shader stages of the VkPipeline
bound to the pipeline bind point used by this command uses the RayQueryKHR
capability, then commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDraw-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDraw-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDraw-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDraw-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDraw-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDraw-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDraw-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDraw-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDraw-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDraw-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDraw-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDraw-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDraw-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDraw-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDraw-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDraw-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDraw-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDraw-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDraw-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDraw-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDraw-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDraw-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDraw-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDraw-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDraw-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDraw-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDraw-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDraw-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDraw-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDraw-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDraw-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDraw-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDraw-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDraw-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDraw-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDraw-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDraw-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDraw-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDraw-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDraw-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDraw-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDraw-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDraw-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDraw-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDraw-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDraw-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDraw-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDraw-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDraw-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDraw-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDraw-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDraw-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDraw-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDraw-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDraw-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDraw-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDraw-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDraw-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDraw-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDraw-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDraw-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDraw-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDraw-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDraw-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDraw-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDraw-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDraw-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDraw-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDraw-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDraw-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDraw-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDraw-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDraw-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDraw-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDraw-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDraw-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDraw-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDraw-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDraw-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDraw-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDraw-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"vkCmdDrawIndexed": {
"core": [
{
"vuid": "VUID-vkCmdDrawIndexed-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawIndexed-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-07312",
"text": " An index buffer must be bound"
},
{
"vuid": "VUID-vkCmdDrawIndexed-firstIndex-04932",
"text": " (indexSize
{times} (firstIndex
+ indexCount
) + offset
) must be less than or equal to the size of the bound index buffer, with indexSize
being based on the type specified by indexType
, where the index buffer, indexType
, and offset
are specified via vkCmdBindIndexBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexed-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndexed-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndexed-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndexed-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndexed-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndexed-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexed-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point used by this command must not write to any resource"
},
{
"vuid": "VUID-vkCmdDrawIndexed-commandBuffer-04617",
"text": " If any of the shader stages of the VkPipeline
bound to the pipeline bind point used by this command uses the RayQueryKHR
capability, then commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawIndexed-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawIndexed-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndexed-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndexed-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndexed-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawIndexed-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawIndexed-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawIndexed-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexed-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexed-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexed-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexed-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexed-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexed-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexed-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndexed-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndexed-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexed-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawIndexed-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawIndexed-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexed-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexed-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndexed-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndexed-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexed-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexed-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawIndexed-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexed-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexed-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndexed-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"vkCmdDrawMultiEXT": {
"(VK_EXT_multi_draw)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04933",
"text": " The multiDraw
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-drawCount-04934",
"text": " drawCount
must be less than VkPhysicalDeviceMultiDrawPropertiesEXT
::maxMultiDrawCount
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-drawCount-04935",
"text": " If drawCount
is greater than zero, pVertexInfo
must be a valid pointer to memory containing one or more valid instances of VkMultiDrawInfoEXT structures"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-stride-04936",
"text": " stride
must be a multiple of 4"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_EXT_multi_draw)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_EXT_multi_draw)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_EXT_multi_draw)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_EXT_multi_draw)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_EXT_multi_draw)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_EXT_multi_draw)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_EXT_multi_draw)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point used by this command must not write to any resource"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-commandBuffer-04617",
"text": " If any of the shader stages of the VkPipeline
bound to the pipeline bind point used by this command uses the RayQueryKHR
capability, then commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_EXT_multi_draw)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_EXT_multi_draw)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_multi_draw)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawMultiEXT-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_EXT_multi_draw)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMultiEXT-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"vkCmdDrawMultiIndexedEXT": {
"(VK_EXT_multi_draw)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-07312",
"text": " An index buffer must be bound"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04937",
"text": " The multiDraw
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstIndex-04938",
"text": " (indexSize
{times} (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-vkCmdDrawMultiIndexedEXT-drawCount-04939",
"text": " drawCount
must be less than VkPhysicalDeviceMultiDrawPropertiesEXT
::maxMultiDrawCount
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-drawCount-04940",
"text": " If drawCount
is greater than zero, pIndexInfo
must be a valid pointer to memory containing one or more valid instances of VkMultiDrawIndexedInfoEXT structures"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stride-04941",
"text": " stride
must be a multiple of 4"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pVertexOffset-parameter",
"text": " If pVertexOffset
is not NULL
, pVertexOffset
must be a valid pointer to a valid int32_t
value"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_EXT_multi_draw)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_EXT_multi_draw)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_EXT_multi_draw)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_EXT_multi_draw)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_EXT_multi_draw)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_EXT_multi_draw)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_EXT_multi_draw)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point used by this command must not write to any resource"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-04617",
"text": " If any of the shader stages of the VkPipeline
bound to the pipeline bind point used by this command uses the RayQueryKHR
capability, then commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_EXT_multi_draw)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_EXT_multi_draw)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_multi_draw)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_multi_draw)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_multi_draw)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_EXT_multi_draw)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMultiIndexedEXT-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"vkCmdDrawIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDrawIndirect-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawIndirect-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-02718",
"text": " If the multiDrawIndirect
feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
"text": " If drawCount
is greater than 1
, stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawIndirectCommand)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawIndirectCommand)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirect-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirect-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndirect-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndirect-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndirect-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndirect-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirect-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawIndirect-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawIndirect-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndirect-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndirect-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndirect-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawIndirect-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawIndirect-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawIndirect-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirect-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirect-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirect-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirect-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirect-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirect-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirect-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndirect-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirect-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawIndirect-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawIndirect-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirect-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirect-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndirect-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndirect-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirect-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirect-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawIndirect-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirect-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirect-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndirect-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"VkDrawIndirectCommand": {
"core": [
{
"vuid": "VUID-VkDrawIndirectCommand-None-00500",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
"text": " If the drawIndirectFirstInstance
feature is not enabled, firstInstance
must be 0
"
}
]
},
"vkCmdDrawIndirectCount": {
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-04129",
"text": " (countBufferOffset
+ sizeof
(uint32_t)) must be less than or equal to the size of countBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-stride-03110",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof(VkDrawIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-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-vkCmdDrawIndirectCount-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawIndirectCount-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_2)": [
{
"vuid": "VUID-vkCmdDrawIndirectCount-None-04445",
"text": " If drawIndirectCount
is not enabled this function must not be used"
}
]
},
"vkCmdDrawIndexedIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718",
"text": " If the multiDrawIndirect
feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-07312",
"text": " An index buffer must be bound"
},
{
"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-00539",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawIndexedIndirectCommand
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirect-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"VkDrawIndexedIndirectCommand": {
"core": [
{
"vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
"text": " (indexSize
{times} (firstIndex
+ indexCount
) + offset
) must be less than or equal to the size of the bound index buffer, with indexSize
being based on the type specified by indexType
, where the index buffer, indexType
, and offset
are specified via vkCmdBindIndexBuffer
"
},
{
"vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
"text": " If the drawIndirectFirstInstance
feature is not enabled, firstInstance
must be 0
"
}
]
},
"vkCmdDrawIndexedIndirectCount": {
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129",
"text": " (countBufferOffset
+ sizeof
(uint32_t)) must be less than or equal to the size of countBuffer
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-07312",
"text": " An index buffer must be bound"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stride-03142",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof(VkDrawIndexedIndirectCommand
)"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-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-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
],
"(VK_VERSION_1_2,VK_KHR_draw_indirect_count)+(VK_VERSION_1_2)": [
{
"vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04445",
"text": " If drawIndirectCount
is not enabled this function must not be used"
}
]
},
"vkCmdDrawIndirectByteCountEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
"text": " The implementation must support VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackDraw
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
"text": " vertexStride
must be greater than 0 and less than or equal to VkPhysicalDeviceLimits::maxTransformFeedbackBufferDataStride
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-04567",
"text": " If counterBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
"text": " counterBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBufferOffset-04568",
"text": " counterBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
"text": " counterBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
"text": " Both of commandBuffer
, and counterBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_transform_feedback)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_EXT_transform_feedback)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_EXT_transform_feedback)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_EXT_transform_feedback)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_EXT_transform_feedback)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_EXT_transform_feedback)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_transform_feedback)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_EXT_transform_feedback)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_EXT_transform_feedback)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawIndirectByteCountEXT-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
]
},
"vkCmdBeginConditionalRenderingEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
"text": " Conditional rendering must not already be active"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
"text": " pConditionalRenderingBegin
must be a valid pointer to a valid VkConditionalRenderingBeginInfoEXT structure"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBeginConditionalRenderingEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkConditionalRenderingBeginInfoEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT
bit set"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
"text": " offset
must be less than the size of buffer
by at least 32 bits"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
"text": " offset
must be a multiple of 4"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT
"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
"text": " flags
must be a valid combination of VkConditionalRenderingFlagBitsEXT values"
}
]
},
"vkCmdEndConditionalRenderingEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
"text": " Conditional rendering must be active"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
"text": " If conditional rendering was made active outside of a render pass instance, it must not be ended inside a render pass instance"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
"text": " If conditional rendering was made active within a subpass it must be ended in the same subpass"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdEndConditionalRenderingEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdDrawMeshTasksNV": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
"text": " taskCount
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxDrawMeshTasksCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-MeshNV-07080",
"text": " The current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
must contain a shader stage using the MeshNV
{ExecutionModel}."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-stage-06480",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-pipelineStatistics-07076",
"text": " The pipelineStatistics
member used to create any active Pipeline Statistics Query must not contain VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT
, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT
, or VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-07074",
"text": " Transform Feedback Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksNV-None-07075",
"text": " Primitives Generated Queries must not be active"
}
]
},
"vkCmdDrawMeshTasksIndirectNV": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718",
"text": " If the multiDrawIndirect
feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
"text": " If drawCount
is greater than 1
, stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawMeshTasksIndirectCommandNV
)"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-MeshNV-07081",
"text": " The current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
must contain a shader stage using the MeshNV
{ExecutionModel}."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-stage-06480",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-pipelineStatistics-07076",
"text": " The pipelineStatistics
member used to create any active Pipeline Statistics Query must not contain VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT
, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT
, or VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07074",
"text": " Transform Feedback Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-07075",
"text": " Primitives Generated Queries must not be active"
}
]
},
"VkDrawMeshTasksIndirectCommandNV": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
"text": " taskCount
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxDrawMeshTasksCount
"
}
]
},
"vkCmdDrawMeshTasksIndirectCountNV": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129",
"text": " (countBufferOffset
+ sizeof
(uint32_t)) must be less than or equal to the size of countBuffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawMeshTasksIndirectCommandNV
)"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
"text": " If maxDrawCount
is greater than or equal to 1
, (stride
{times} (maxDrawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
"text": " If the count stored in countBuffer
is equal to 1
, (offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
"text": " If the count stored in countBuffer
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandNV
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-MeshNV-07082",
"text": " The current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
must contain a shader stage using the MeshNV
{ExecutionModel}."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stage-06480",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-pipelineStatistics-07076",
"text": " The pipelineStatistics
member used to create any active Pipeline Statistics Query must not contain VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT
, VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT
, VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT
, VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT
, or VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07074",
"text": " Transform Feedback Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07075",
"text": " Primitives Generated Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_NV_mesh_shader)+(VK_VERSION_1_2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445",
"text": " If drawIndirectCount
is not enabled this function must not be used"
}
]
},
"vkCmdDrawMeshTasksEXT": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07322",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, groupCountX
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07323",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, groupCountY
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07324",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07325",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, The product of groupCountX
, groupCountY
and groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupTotalCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07326",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, groupCountX
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07327",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, groupCountY
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07328",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-TaskEXT-07329",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, The product of groupCountX
, groupCountY
and groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupTotalCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-MeshEXT-07087",
"text": " The current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
must contain a shader stage using the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksEXT-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
]
},
"vkCmdDrawMeshTasksIndirectEXT": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02718",
"text": " If the multiDrawIndirect
feature is not enabled, drawCount
must be 0
or 1
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-02719",
"text": " drawCount
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07088",
"text": " If drawCount
is greater than 1
, stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawMeshTasksIndirectCommandEXT
)"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07089",
"text": " If drawCount
is equal to 1
, (offset
+ sizeof
(VkDrawMeshTasksIndirectCommandEXT)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-drawCount-07090",
"text": " If drawCount
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandEXT)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-MeshEXT-07091",
"text": " The current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
must contain a shader stage using the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectEXT-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
]
},
"VkDrawMeshTasksIndirectCommandEXT": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07322",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, groupCountX
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupCount
[0]"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07323",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, groupCountY
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupCount
[1]"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07324",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupCount
[2]"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07325",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
contains a shader using the TaskEXT
{ExecutionModel}, The product of groupCountX
, groupCountY
and groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupTotalCount
"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07326",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, groupCountX
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[0]"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07327",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, groupCountY
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[1]"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07328",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[2]"
},
{
"vuid": "VUID-VkDrawMeshTasksIndirectCommandEXT-TaskEXT-07329",
"text": " If the current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
does not contain a shader using the TaskEXT
{ExecutionModel}, The product of groupCountX
, groupCountY
and groupCountZ
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupTotalCount
"
}
]
},
"vkCmdDrawMeshTasksIndirectCountEXT": {
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02714",
"text": " If countBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02715",
"text": " countBuffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-02716",
"text": " countBufferOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-02717",
"text": " The count stored in countBuffer
must be less than or equal to VkPhysicalDeviceLimits
::maxDrawIndirectCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBufferOffset-04129",
"text": " (countBufferOffset
+ sizeof
(uint32_t)) must be less than or equal to the size of countBuffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stride-07096",
"text": " stride
must be a multiple of 4
and must be greater than or equal to sizeof
(VkDrawMeshTasksIndirectCommandEXT
)"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxDrawCount-07097",
"text": " If maxDrawCount
is greater than or equal to 1
, (stride
{times} (maxDrawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandEXT
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-07098",
"text": " If the count stored in countBuffer
is equal to 1
, (offset
+ sizeof
(VkDrawMeshTasksIndirectCommandEXT
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-07099",
"text": " If the count stored in countBuffer
is greater than 1
, (stride
{times} (drawCount
- 1) + offset
+ sizeof
(VkDrawMeshTasksIndirectCommandEXT
)) must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-MeshEXT-07100",
"text": " The current pipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS
must contain a shader stage using the MeshEXT
{ExecutionModel}"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-countBuffer-parameter",
"text": " countBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commonparent",
"text": " Each of buffer
, commandBuffer
, and countBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_NV_mesh_shader,VK_EXT_mesh_shader)+(VK_EXT_mesh_shader)+(VK_VERSION_1_2)": [
{
"vuid": "VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-04445",
"text": " If drawIndirectCount
is not enabled this function must not be used"
}
]
},
"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-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkVertexInputBindingDescription-stride-04456",
"text": " If the VK_KHR_portability_subset
extension is enabled, stride
must be a multiple of, and at least as large as, VkPhysicalDevicePortabilitySubsetPropertiesKHR::minVertexInputBindingStrideAlignment
"
}
]
},
"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"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::vertexAttributeAccessBeyondStride
is VK_FALSE
, the sum of offset
plus the size of the vertex attribute data described by format
must not be greater than stride
in the VkVertexInputBindingDescription referenced in binding
"
}
]
},
"vkCmdSetVertexInputEXT": {
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetVertexInputEXT-None-04790",
"text": " The vertexInputDynamicState
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-vertexBindingDescriptionCount-04791",
"text": " vertexBindingDescriptionCount
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-vertexAttributeDescriptionCount-04792",
"text": " vertexAttributeDescriptionCount
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputAttributes
"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-binding-04793",
"text": " For every binding
specified by each element of pVertexAttributeDescriptions
, a VkVertexInputBindingDescription2EXT
must exist in pVertexBindingDescriptions
with the same value of binding
"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-04794",
"text": " All elements of pVertexBindingDescriptions
must describe distinct binding numbers"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-04795",
"text": " All elements of pVertexAttributeDescriptions
must describe distinct attribute locations"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-pVertexBindingDescriptions-parameter",
"text": " If vertexBindingDescriptionCount
is not 0
, pVertexBindingDescriptions
must be a valid pointer to an array of vertexBindingDescriptionCount
valid VkVertexInputBindingDescription2EXT structures"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-pVertexAttributeDescriptions-parameter",
"text": " If vertexAttributeDescriptionCount
is not 0
, pVertexAttributeDescriptions
must be a valid pointer to an array of vertexAttributeDescriptionCount
valid VkVertexInputAttributeDescription2EXT structures"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetVertexInputEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkVertexInputBindingDescription2EXT": {
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-binding-04796",
"text": " binding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-stride-04797",
"text": " stride
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindingStride
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-04798",
"text": " If the vertexAttributeInstanceRateZeroDivisor
feature is not enabled, divisor
must not be 0
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-04799",
"text": " If the vertexAttributeInstanceRateDivisor
feature is not enabled, divisor
must be 1
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-06226",
"text": " divisor
must be a value between 0
and VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
::maxVertexAttribDivisor
, inclusive"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-divisor-06227",
"text": " If divisor
is not 1
then inputRate
must be of type VK_VERTEX_INPUT_RATE_INSTANCE
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT
"
},
{
"vuid": "VUID-VkVertexInputBindingDescription2EXT-inputRate-parameter",
"text": " inputRate
must be a valid VkVertexInputRate value"
}
]
},
"VkVertexInputAttributeDescription2EXT": {
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-VkVertexInputAttributeDescription2EXT-location-06228",
"text": " location
must be less than VkPhysicalDeviceLimits
::maxVertexInputAttributes
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription2EXT-binding-06229",
"text": " binding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription2EXT-offset-06230",
"text": " offset
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputAttributeOffset
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription2EXT-format-04805",
"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-VkVertexInputAttributeDescription2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT
"
},
{
"vuid": "VUID-VkVertexInputAttributeDescription2EXT-format-parameter",
"text": " format
must be a valid VkFormat value"
}
],
"(VK_EXT_vertex_input_dynamic_state)+(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkVertexInputAttributeDescription2EXT-vertexAttributeAccessBeyondStride-04806",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::vertexAttributeAccessBeyondStride
is VK_FALSE
, the sum of offset
plus the size of the vertex attribute data described by format
must not be greater than stride
in the VkVertexInputBindingDescription2EXT referenced in binding
"
}
]
},
"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-pBuffers-04001",
"text": " If the nullDescriptor
feature is not enabled, all elements of pBuffers
must not be VK_NULL_HANDLE"
},
{
"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 or VK_NULL_HANDLE VkBuffer handles"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
"text": " pOffsets
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"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
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_robustness2)": [
{
"vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04002",
"text": " If an element of pBuffers
is VK_NULL_HANDLE, then the corresponding element of pOffsets
must be zero"
}
]
},
"vkCmdBindVertexBuffers2": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdBindVertexBuffers2-firstBinding-03355",
"text": " firstBinding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-firstBinding-03356",
"text": " The sum of firstBinding
and bindingCount
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pOffsets-03357",
"text": " All elements of pOffsets
must be less than the size of the corresponding element in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pSizes-03358",
"text": " If pSizes
is not NULL
, all elements of pOffsets
plus pSizes
must be less than or equal to the size of the corresponding element in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-03359",
"text": " All elements of pBuffers
must have been created with the VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
flag"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-03360",
"text": " Each element of pBuffers
that is non-sparse must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-04111",
"text": " If the nullDescriptor
feature is not enabled, all elements of pBuffers
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pStrides-03362",
"text": " If pStrides
is not NULL
each element of pStrides
must be less than or equal to VkPhysicalDeviceLimits
::maxVertexInputBindingStride
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pStrides-06209",
"text": " If pStrides
is not NULL
each element of pStrides
must be either 0 or greater than or equal to the maximum extent of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the VkVertexInputAttributeDescription::offset
plus VkVertexInputAttributeDescription::format
size"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-parameter",
"text": " pBuffers
must be a valid pointer to an array of bindingCount
valid or VK_NULL_HANDLE VkBuffer handles"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pOffsets-parameter",
"text": " pOffsets
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pSizes-parameter",
"text": " If pSizes
is not NULL
, pSizes
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pStrides-parameter",
"text": " If pStrides
is not NULL
, pStrides
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-bindingCount-arraylength",
"text": " If any of pSizes
, or pStrides
are not NULL
, bindingCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBindVertexBuffers2-commonparent",
"text": " Both of commandBuffer
, and the elements of pBuffers
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_robustness2)": [
{
"vuid": "VUID-vkCmdBindVertexBuffers2-pBuffers-04112",
"text": " If an element of pBuffers
is VK_NULL_HANDLE, then the corresponding element of pOffsets
must be zero"
}
]
},
"VkPipelineVertexInputDivisorStateCreateInfoEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
"text": " pVertexBindingDivisors
must be a valid pointer to an array of vertexBindingDivisorCount
VkVertexInputBindingDivisorDescriptionEXT structures"
},
{
"vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
"text": " vertexBindingDivisorCount
must be greater than 0
"
}
]
},
"VkVertexInputBindingDivisorDescriptionEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
"text": " binding
must be less than VkPhysicalDeviceLimits
::maxVertexInputBindings
"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
"text": " If the vertexAttributeInstanceRateZeroDivisor
feature is not enabled, divisor
must not be 0
"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
"text": " If the vertexAttributeInstanceRateDivisor
feature is not enabled, divisor
must be 1
"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
"text": " divisor
must be a value between 0
and VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT
::maxVertexAttribDivisor
, inclusive"
},
{
"vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
"text": " VkVertexInputBindingDescription::inputRate
must be of type VK_VERTEX_INPUT_RATE_INSTANCE
for this binding
"
}
]
},
"VkPipelineTessellationStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
"text": " patchControlPoints
must be greater than zero and less than or equal to VkPhysicalDeviceLimits
::maxTessellationPatchSize
"
},
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkPipelineTessellationDomainOriginStateCreateInfo"
},
{
"vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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"
}
]
},
"vkCmdSetTessellationDomainOriginEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-extendedDynamicState3TessellationDomainOrigin-07444",
"text": " The extendedDynamicState3TessellationDomainOrigin
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-domainOrigin-parameter",
"text": " domainOrigin
must be a valid VkTessellationDomainOrigin value"
},
{
"vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetTessellationDomainOriginEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdBindTransformFeedbackBuffersEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
"text": " firstBinding
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
"text": " The sum of firstBinding
and bindingCount
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
"text": " All elements of pOffsets
must be less than the size of the corresponding element in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
"text": " All elements of pOffsets
must be a multiple of 4"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
"text": " All elements of pBuffers
must have been created with the VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
flag"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
"text": " If the optional pSize
array is specified, each element of pSizes
must either be VK_WHOLE_SIZE
, or be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBufferSize
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
"text": " All elements of pSizes
must be either VK_WHOLE_SIZE
, or less than or equal to the size of the corresponding buffer in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
"text": " All elements of pOffsets
plus pSizes
, where the pSizes
, element is not VK_WHOLE_SIZE
, must be less than or equal to the size of the corresponding buffer in pBuffers
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
"text": " Each element of pBuffers
that is non-sparse must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
"text": " Transform feedback must not be active when the vkCmdBindTransformFeedbackBuffersEXT
command is recorded"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
"text": " pBuffers
must be a valid pointer to an array of bindingCount
valid VkBuffer handles"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
"text": " pOffsets
must be a valid pointer to an array of bindingCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
"text": " bindingCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
"text": " Both of commandBuffer
, and the elements of pBuffers
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdBeginTransformFeedbackEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
"text": " Transform feedback must not be active"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
"text": " firstCounterBuffer
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
"text": " The sum of firstCounterBuffer
and counterBufferCount
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
"text": " If counterBufferCount
is not 0
, and pCounterBuffers
is not NULL
, pCounterBuffers
must be a valid pointer to an array of counterBufferCount
VkBuffer
handles that are either valid or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
"text": " For each buffer handle in the array, if it is not VK_NULL_HANDLE it must reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets
array"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
"text": " If pCounterBuffer
is NULL
, then pCounterBufferOffsets
must also be NULL
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
"text": " For each buffer handle in the pCounterBuffers
array that is not VK_NULL_HANDLE it must have been created with a usage
value containing VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-06233",
"text": " A valid graphics pipeline must be bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-04128",
"text": " The last pre-rasterization shader stage of the bound graphics pipeline must have been declared with the Xfb
execution mode"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
"text": " If counterBufferCount
is not 0
, and pCounterBufferOffsets
is not NULL
, pCounterBufferOffsets
must be a valid pointer to an array of counterBufferCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
"text": " Both of commandBuffer
, and the elements of pCounterBuffers
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
"text": " Transform feedback must not be made active in a render pass instance with multiview enabled"
}
]
},
"vkCmdEndTransformFeedbackEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::transformFeedback
must be enabled"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
"text": " Transform feedback must be active"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
"text": " firstCounterBuffer
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
"text": " The sum of firstCounterBuffer
and counterBufferCount
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBuffers
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
"text": " If counterBufferCount
is not 0
, and pCounterBuffers
is not NULL
, pCounterBuffers
must be a valid pointer to an array of counterBufferCount
VkBuffer
handles that are either valid or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
"text": " For each buffer handle in the array, if it is not VK_NULL_HANDLE it must reference a buffer large enough to hold 4 bytes at the corresponding offset from the pCounterBufferOffsets
array"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
"text": " If pCounterBuffer
is NULL
, then pCounterBufferOffsets
must also be NULL
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
"text": " For each buffer handle in the pCounterBuffers
array that is not VK_NULL_HANDLE it must have been created with a usage
value containing VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
"text": " If counterBufferCount
is not 0
, and pCounterBufferOffsets
is not NULL
, pCounterBufferOffsets
must be a valid pointer to an array of counterBufferCount
VkDeviceSize
values"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
"text": " Both of commandBuffer
, and the elements of pCounterBuffers
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkPipelineViewportSwizzleStateCreateInfoNV": {
"(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
"text": " viewportCount
must be greater than or equal to the viewportCount
set in VkPipelineViewportStateCreateInfo
"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
"text": " pViewportSwizzles
must be a valid pointer to an array of viewportCount
valid VkViewportSwizzleNV structures"
},
{
"vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"vkCmdSetViewportSwizzleNV": {
"(VK_NV_viewport_swizzle)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-extendedDynamicState3ViewportSwizzle-07445",
"text": " The extendedDynamicState3ViewportSwizzle
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-pViewportSwizzles-parameter",
"text": " pViewportSwizzles
must be a valid pointer to an array of viewportCount
valid VkViewportSwizzleNV structures"
},
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetViewportSwizzleNV-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"
}
]
},
"VkPipelineRasterizationProvokingVertexStateCreateInfoEXT": {
"(VK_EXT_provoking_vertex)": [
{
"vuid": "VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-04883",
"text": " If provokingVertexMode
is VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
, then the provokingVertexLast
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationProvokingVertexStateCreateInfoEXT-provokingVertexMode-parameter",
"text": " provokingVertexMode
must be a valid VkProvokingVertexModeEXT value"
}
]
},
"vkCmdSetProvokingVertexModeEXT": {
"(VK_EXT_provoking_vertex)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-extendedDynamicState3ProvokingVertexMode-07446",
"text": " The extendedDynamicState3ProvokingVertexMode
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-provokingVertexMode-07447",
"text": " If provokingVertexMode
is VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT
, then the provokingVertexLast
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-provokingVertexMode-parameter",
"text": " provokingVertexMode
must be a valid VkProvokingVertexModeEXT value"
},
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetProvokingVertexModeEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthClampEnableEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetDepthClampEnableEXT-extendedDynamicState3DepthClampEnable-07448",
"text": " The extendedDynamicState3DepthClampEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetDepthClampEnableEXT-depthClamp-07449",
"text": " If the depthClamp
feature is not enabled, depthClampEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthClampEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthClipEnableEXT": {
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_depth_clip_enable)": [
{
"vuid": "VUID-vkCmdSetDepthClipEnableEXT-extendedDynamicState3DepthClipEnable-07450",
"text": " The extendedDynamicState3DepthClipEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetDepthClipEnableEXT-depthClipEnable-07451",
"text": " The depthClipEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthClipEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineViewportDepthClipControlCreateInfoEXT": {
"(VK_EXT_depth_clip_control)": [
{
"vuid": "VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-negativeOneToOne-06470",
"text": " If depthClipControl
is not enabled, negativeOneToOne
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineViewportDepthClipControlCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT
"
}
]
},
"vkCmdSetDepthClipNegativeOneToOneEXT": {
"(VK_EXT_depth_clip_control)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-extendedDynamicState3DepthClipNegativeOneToOne-07452",
"text": " The extendedDynamicState3DepthClipNegativeOneToOne
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-depthClipControl-07453",
"text": " The depthClipControl
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthClipNegativeOneToOneEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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
"
}
]
},
"vkCmdSetViewportWScalingEnableNV": {
"(VK_NV_clip_space_w_scaling)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetViewportWScalingEnableNV-extendedDynamicState3ViewportWScalingEnable-07580",
"text": " The extendedDynamicState3ViewportWScalingEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingEnableNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetViewportWScalingNV": {
"(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
"text": " The sum of firstViewport
and viewportCount
must be between 1
and VkPhysicalDeviceLimits::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
"text": " pViewportWScalings
must be a valid pointer to an array of viewportCount
VkViewportWScalingNV structures"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"VkPipelineViewportStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
"text": " If the multiViewport
feature is not enabled, viewportCount
must not be greater than 1
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
"text": " If the multiViewport
feature is not enabled, scissorCount
must not be greater than 1
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
"text": " viewportCount
must be less than or equal to VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
"text": " scissorCount
must be less than or equal to VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-x-02821",
"text": " The x
and y
members of offset
member of any element of pScissors
must be greater than or equal to 0
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02822",
"text": " Evaluation of (offset.x
+ extent.width
) must not cause a signed integer addition overflow for any element of pScissors
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02823",
"text": " Evaluation of (offset.y
+ extent.height
) must not cause a signed integer addition overflow for any element of pScissors
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineViewportCoarseSampleOrderStateCreateInfoNV, VkPipelineViewportDepthClipControlCreateInfoEXT, VkPipelineViewportExclusiveScissorStateCreateInfoNV, VkPipelineViewportShadingRateImageStateCreateInfoNV, VkPipelineViewportSwizzleStateCreateInfoNV, or VkPipelineViewportWScalingStateCreateInfoNV"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
}
],
"!(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
"text": " scissorCount
and viewportCount
must be identical"
},
{
"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_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134",
"text": " If the graphics pipeline is being created without VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
set then scissorCount
and viewportCount
must be identical"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135",
"text": " If the graphics pipeline is being created with VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
set then viewportCount
must be 0
, otherwise it must be greater than 0
"
},
{
"vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136",
"text": " If the graphics pipeline is being created with VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
set then scissorCount
must be 0
, otherwise it 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 included in the pNext
chain is VK_TRUE
, the viewportCount
member of the VkPipelineViewportWScalingStateCreateInfoNV structure must be greater than or equal to VkPipelineViewportStateCreateInfo::viewportCount
"
}
]
},
"vkCmdSetViewportWithCount": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetViewportWithCount-None-03393",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetViewportWithCount-viewportCount-03394",
"text": " viewportCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-viewportCount-03395",
"text": " If the multiViewport
feature is not enabled, viewportCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-pViewports-parameter",
"text": " pViewports
must be a valid pointer to an array of viewportCount
valid VkViewport structures"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetViewportWithCount-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-vkCmdSetViewportWithCount-commandBuffer-04819",
"text": " commandBuffer
must not have VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled"
}
]
},
"vkCmdSetScissorWithCount": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetScissorWithCount-None-03396",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetScissorWithCount-scissorCount-03397",
"text": " scissorCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-scissorCount-03398",
"text": " If the multiViewport
feature is not enabled, scissorCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-x-03399",
"text": " The x
and y
members of offset
member of any element of pScissors
must be greater than or equal to 0
"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-offset-03400",
"text": " Evaluation of (offset.x
+ extent.width
) must not cause a signed integer addition overflow for any element of pScissors
"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-offset-03401",
"text": " Evaluation of (offset.y
+ extent.height
) must not cause a signed integer addition overflow for any element of pScissors
"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-pScissors-parameter",
"text": " pScissors
must be a valid pointer to an array of scissorCount
VkRect2D structures"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetScissorWithCount-scissorCount-arraylength",
"text": " scissorCount
must be greater than 0
"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-vkCmdSetScissorWithCount-commandBuffer-04820",
"text": " commandBuffer
must not have VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled"
}
]
},
"vkCmdSetViewport": {
"core": [
{
"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 multiViewport
feature is not enabled, firstViewport
must be 0
"
},
{
"vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
"text": " If the multiViewport
feature is not enabled, viewportCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
"text": " pViewports
must be a valid pointer to an array of viewportCount
valid VkViewport structures"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewport-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
],
"(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-vkCmdSetViewport-commandBuffer-04821",
"text": " commandBuffer
must not have VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled"
}
]
},
"VkViewport": {
"core": [
{
"vuid": "VUID-VkViewport-width-01770",
"text": " width
must be greater than 0.0
"
},
{
"vuid": "VUID-VkViewport-width-01771",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxViewportDimensions
[0]"
},
{
"vuid": "VUID-VkViewport-height-01773",
"text": " The absolute value of height
must be less than or equal to VkPhysicalDeviceLimits
::maxViewportDimensions
[1]"
},
{
"vuid": "VUID-VkViewport-x-01774",
"text": " x
must be greater than or equal to viewportBoundsRange
[0]"
},
{
"vuid": "VUID-VkViewport-x-01232",
"text": " (x
+ width
) must be less than or equal to viewportBoundsRange
[1]"
},
{
"vuid": "VUID-VkViewport-y-01775",
"text": " y
must be greater than or equal to viewportBoundsRange
[0]"
},
{
"vuid": "VUID-VkViewport-y-01233",
"text": " (y
+ height
) must be less than or equal to viewportBoundsRange
[1]"
}
],
"!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
{
"vuid": "VUID-VkViewport-height-01772",
"text": " height
must be greater than 0.0
"
}
],
"(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
{
"vuid": "VUID-VkViewport-y-01776",
"text": " y
must be less than or equal to viewportBoundsRange
[1]"
},
{
"vuid": "VUID-VkViewport-y-01777",
"text": " (y
+ height
) must be greater than or equal to viewportBoundsRange
[0]"
}
],
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkViewport-minDepth-01234",
"text": " Unless VK_EXT_depth_range_unrestricted
extension is enabled minDepth
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-VkViewport-maxDepth-01235",
"text": " Unless VK_EXT_depth_range_unrestricted
extension is enabled maxDepth
must be between 0.0
and 1.0
, inclusive"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-VkViewport-minDepth-02540",
"text": " minDepth
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-VkViewport-maxDepth-02541",
"text": " maxDepth
must be between 0.0
and 1.0
, inclusive"
}
]
},
"VkPipelineRasterizationStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
"text": " If the depthClamp
feature is not enabled, depthClampEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineRasterizationConservativeStateCreateInfoEXT, VkPipelineRasterizationDepthClipStateCreateInfoEXT, VkPipelineRasterizationLineStateCreateInfoEXT, VkPipelineRasterizationProvokingVertexStateCreateInfoEXT, VkPipelineRasterizationStateRasterizationOrderAMD, or VkPipelineRasterizationStateStreamCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
"text": " The sType
value of each struct 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 fillModeNonSolid
feature is not enabled, polygonMode
must be VK_POLYGON_MODE_FILL
"
}
],
"(VK_NV_fill_rectangle)": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
"text": " If the fillModeNonSolid
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
"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::pointPolygons
is VK_FALSE
, and rasterizerDiscardEnable
is VK_FALSE
, polygonMode
must not be VK_POLYGON_MODE_POINT
"
}
]
},
"VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
"(VK_EXT_depth_clip_enable)": [
{
"vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"VkPipelineMultisampleStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
"text": " If the sampleRateShading
feature is not enabled, sampleShadingEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
"text": " If the alphaToOne
feature is not enabled, alphaToOneEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
"text": " minSampleShading
must be in the range [0,1]"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkPipelineCoverageModulationStateCreateInfoNV, VkPipelineCoverageReductionStateCreateInfoNV, VkPipelineCoverageToColorStateCreateInfoNV, or VkPipelineSampleLocationsStateCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
"text": " rasterizationSamples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
"text": " If pSampleMask
is not NULL
, pSampleMask
must be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) VkSampleMask
values"
}
],
"(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the subpass has any color attachments and rasterizationSamples
is greater than the number of color samples, then sampleShadingEnable
must be VK_FALSE
"
}
]
},
"vkCmdSetRasterizerDiscardEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetRasterizerDiscardEnable-None-04871",
"text": " The extendedDynamicState2
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetRasterizerDiscardEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetRasterizerDiscardEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineRasterizationStateStreamCreateInfoEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
"text": " VkPhysicalDeviceTransformFeedbackFeaturesEXT
::geometryStreams
must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
"text": " rasterizationStream
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
"text": " rasterizationStream
must be zero if VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackRasterizationStreamSelect
is VK_FALSE
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCmdSetRasterizationStreamEXT": {
"(VK_EXT_transform_feedback)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-extendedDynamicState3RasterizationStream-07410",
"text": " The extendedDynamicState3RasterizationStream
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-transformFeedback-07411",
"text": " The transformFeedback
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-rasterizationStream-07412",
"text": " rasterizationStream
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-rasterizationStream-07413",
"text": " rasterizationStream
must be zero if VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackRasterizationStreamSelect
is VK_FALSE
"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetRasterizationStreamEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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"
}
]
},
"vkCmdSetRasterizationSamplesEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetRasterizationSamplesEXT-extendedDynamicState3RasterizationSamples-07414",
"text": " The extendedDynamicState3RasterizationSamples
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetRasterizationSamplesEXT-rasterizationSamples-parameter",
"text": " rasterizationSamples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetRasterizationSamplesEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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-pSampleLocations-parameter",
"text": " If sampleLocationsCount
is not 0
, pSampleLocations
must be a valid pointer to an array of sampleLocationsCount
VkSampleLocationEXT structures"
}
]
},
"vkCmdSetSampleLocationsEnableEXT": {
"(VK_EXT_sample_locations)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-extendedDynamicState3SampleLocationsEnable-07415",
"text": " The extendedDynamicState3SampleLocationsEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetSampleLocationsEXT": {
"(VK_EXT_sample_locations)+!(VK_EXT_extended_dynamic_state3)": [
{
"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"
}
],
"(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
"text": " If VkPhysicalDeviceSampleLocationsPropertiesEXT::variableSampleLocations
is VK_FALSE
then the current render pass must have been begun by specifying a VkRenderPassSampleLocationsBeginInfoEXT structure whose pPostSubpassSampleLocations
member contains an element with a subpassIndex
matching the current subpass index and the sampleLocationsInfo
member of that element must match the sample locations state pointed to by pSampleLocationsInfo
"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
"text": " pSampleLocationsInfo
must be a valid pointer to a valid VkSampleLocationsInfoEXT structure"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetSampleLocationsEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkGetPhysicalDeviceFragmentShadingRatesKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRateCount-parameter",
"text": " pFragmentShadingRateCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRates-parameter",
"text": " If the value referenced by pFragmentShadingRateCount
is not 0
, and pFragmentShadingRates
is not NULL
, pFragmentShadingRates
must be a valid pointer to an array of pFragmentShadingRateCount
VkPhysicalDeviceFragmentShadingRateKHR structures"
}
]
},
"VkPhysicalDeviceFragmentShadingRateKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR
"
},
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkPipelineFragmentShadingRateStateCreateInfoKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR
"
}
]
},
"vkCmdSetFragmentShadingRateKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507",
"text": " If pipelineFragmentShadingRate
is not enabled, pFragmentSize->width
must be 1
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508",
"text": " If pipelineFragmentShadingRate
is not enabled, pFragmentSize->height
must be 1
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509",
"text": " One of pipelineFragmentShadingRate
, primitiveFragmentShadingRate
, or attachmentFragmentShadingRate
must be enabled"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510",
"text": " If the primitiveFragmentShadingRate
feature is not enabled, combinerOps
[0] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, combinerOps
[1] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512",
"text": " If the fragmentSizeNonTrivialCombinerOps
limit is not supported, elements of combinerOps
must be either VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
or VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513",
"text": " pFragmentSize->width
must be greater than or equal to 1
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514",
"text": " pFragmentSize->height
must be greater than or equal to 1
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515",
"text": " pFragmentSize->width
must be a power-of-two value"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516",
"text": " pFragmentSize->height
must be a power-of-two value"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517",
"text": " pFragmentSize->width
must be less than or equal to 4
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518",
"text": " pFragmentSize->height
must be less than or equal to 4
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter",
"text": " pFragmentSize
must be a valid pointer to a valid VkExtent2D structure"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter",
"text": " Any given element of combinerOps
must be a valid VkFragmentShadingRateCombinerOpKHR value"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineFragmentShadingRateEnumStateCreateInfoNV": {
"(VK_NV_fragment_shading_rate_enums)": [
{
"vuid": "VUID-VkPipelineFragmentShadingRateEnumStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV
"
}
]
},
"vkCmdSetFragmentShadingRateEnumNV": {
"(VK_NV_fragment_shading_rate_enums)": [
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04576",
"text": " If pipelineFragmentShadingRate
is not enabled, shadingRate
must be VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-supersampleFragmentShadingRates-04577",
"text": " If supersampleFragmentShadingRates
is not enabled, shadingRate
must not be VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV
, VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV
, VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV
, or VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-noInvocationFragmentShadingRates-04578",
"text": " If noInvocationFragmentShadingRates
is not enabled, shadingRate
must not be VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentShadingRateEnums-04579",
"text": " The fragmentShadingRateEnums
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-pipelineFragmentShadingRate-04580",
"text": " One of the pipelineFragmentShadingRate
, primitiveFragmentShadingRate
, or attachmentFragmentShadingRate
features must be enabled"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-primitiveFragmentShadingRate-04581",
"text": " If the primitiveFragmentShadingRate
feature is not enabled, combinerOps
[0] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-attachmentFragmentShadingRate-04582",
"text": " If the attachmentFragmentShadingRate
feature is not enabled, combinerOps
[1] must be VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-fragmentSizeNonTrivialCombinerOps-04583",
"text": " If the fragmentSizeNonTrivialCombinerOps
limit is not supported, elements of combinerOps
must be either VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR
or VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR
"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-shadingRate-parameter",
"text": " shadingRate
must be a valid VkFragmentShadingRateNV value"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-combinerOps-parameter",
"text": " Any given element of combinerOps
must be a valid VkFragmentShadingRateCombinerOpKHR value"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetFragmentShadingRateEnumNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineViewportShadingRateImageStateCreateInfoNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
"text": " If the multiViewport
feature is not enabled, viewportCount
must be 0
or 1
"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
"text": " viewportCount
must be less than or equal to VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
"text": " If shadingRateImageEnable
is VK_TRUE
, viewportCount
must be greater or equal to the viewportCount
member of VkPipelineViewportStateCreateInfo"
},
{
"vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV
"
}
]
},
"vkCmdBindShadingRateImageNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
"text": " The shadingRateImage
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
"text": " If imageView
is not VK_NULL_HANDLE, it must be a valid VkImageView handle of type VK_IMAGE_VIEW_TYPE_2D
or VK_IMAGE_VIEW_TYPE_2D_ARRAY
"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
"text": " If imageView
is not VK_NULL_HANDLE, it must have a format of VK_FORMAT_R8_UINT
"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
"text": " If imageView
is not VK_NULL_HANDLE, it must have been created with a usage
value including VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV
"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must match the actual VkImageLayout of each subresource accessible from imageView
at the time the subresource is accessed"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must be VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV
or VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
"text": " Both of commandBuffer
, and imageView
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdSetShadingRateImageEnableNV": {
"(VK_NV_shading_rate_image)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetShadingRateImageEnableNV-extendedDynamicState3ShadingRateImageEnable-07416",
"text": " The extendedDynamicState3ShadingRateImageEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetShadingRateImageEnableNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetViewportShadingRatePaletteNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
"text": " The shadingRateImage
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
"text": " The sum of firstViewport
and viewportCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
"text": " If the multiViewport
feature is not enabled, firstViewport
must be 0
"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
"text": " If the multiViewport
feature is not enabled, viewportCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
"text": " pShadingRatePalettes
must be a valid pointer to an array of viewportCount
valid VkShadingRatePaletteNV structures"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
"text": " viewportCount
must be greater than 0
"
}
]
},
"VkShadingRatePaletteNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
"text": " shadingRatePaletteEntryCount
must be between 1
and VkPhysicalDeviceShadingRateImagePropertiesNV
::shadingRatePaletteSize
, inclusive"
},
{
"vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
"text": " pShadingRatePaletteEntries
must be a valid pointer to an array of shadingRatePaletteEntryCount
valid VkShadingRatePaletteEntryNV values"
},
{
"vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
"text": " shadingRatePaletteEntryCount
must be greater than 0
"
}
]
},
"VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
"text": " If sampleOrderType
is not VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV
, customSamplerOrderCount
must be 0
"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
"text": " The array pCustomSampleOrders
must not contain two structures with matching values for both the shadingRate
and sampleCount
members"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
"text": " sampleOrderType
must be a valid VkCoarseSampleOrderTypeNV value"
},
{
"vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
"text": " If customSampleOrderCount
is not 0
, pCustomSampleOrders
must be a valid pointer to an array of customSampleOrderCount
valid VkCoarseSampleOrderCustomNV structures"
}
]
},
"VkCoarseSampleOrderCustomNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
"text": " shadingRate
must be a shading rate that generates fragments with more than one pixel"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
"text": " sampleCount
must correspond to a sample count enumerated in VkSampleCountFlags whose corresponding bit is set in VkPhysicalDeviceLimits::framebufferNoAttachmentsSampleCounts
"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
"text": " sampleLocationCount
must be equal to the product of sampleCount
, the fragment width for shadingRate
, and the fragment height for shadingRate
"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
"text": " sampleLocationCount
must be less than or equal to the value of VkPhysicalDeviceShadingRateImagePropertiesNV
::shadingRateMaxCoarseSamples
"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
"text": " The array pSampleLocations
must contain exactly one entry for every combination of valid values for pixelX
, pixelY
, and sample
in the structure VkCoarseSampleOrderCustomNV"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
"text": " shadingRate
must be a valid VkShadingRatePaletteEntryNV value"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
"text": " pSampleLocations
must be a valid pointer to an array of sampleLocationCount
VkCoarseSampleLocationNV structures"
},
{
"vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
"text": " sampleLocationCount
must be greater than 0
"
}
]
},
"VkCoarseSampleLocationNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
"text": " pixelX
must be less than the width (in pixels) of the fragment"
},
{
"vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
"text": " pixelY
must be less than the height (in pixels) of the fragment"
},
{
"vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
"text": " sample
must be less than the number of coverage samples in each pixel belonging to the fragment"
}
]
},
"vkCmdSetCoarseSampleOrderNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
"text": " If sampleOrderType
is not VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV
, customSamplerOrderCount
must be 0
"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
"text": " The array pCustomSampleOrders
must not contain two structures with matching values for both the shadingRate
and sampleCount
members"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
"text": " sampleOrderType
must be a valid VkCoarseSampleOrderTypeNV value"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
"text": " If customSampleOrderCount
is not 0
, pCustomSampleOrders
must be a valid pointer to an array of customSampleOrderCount
valid VkCoarseSampleOrderCustomNV structures"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoarseSampleOrderNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineRasterizationLineStateCreateInfoEXT": {
"(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768",
"text": " If lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the rectangularLines
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769",
"text": " If lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the bresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770",
"text": " If lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the smoothLines
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771",
"text": " If stippledLineEnable
is VK_TRUE
and lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772",
"text": " If stippledLineEnable
is VK_TRUE
and lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773",
"text": " If stippledLineEnable
is VK_TRUE
and lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774",
"text": " If stippledLineEnable
is VK_TRUE
and lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter",
"text": " lineRasterizationMode
must be a valid VkLineRasterizationModeEXT value"
}
]
},
"vkCmdSetLineRasterizationModeEXT": {
"(VK_EXT_line_rasterization)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-extendedDynamicState3LineRasterizationMode-07417",
"text": " The extendedDynamicState3LineRasterizationMode
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07418",
"text": " If lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the rectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07419",
"text": " If lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the bresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-07420",
"text": " If lineRasterizationMode
is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the smoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-lineRasterizationMode-parameter",
"text": " lineRasterizationMode
must be a valid VkLineRasterizationModeEXT value"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetLineRasterizationModeEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetLineStippleEnableEXT": {
"(VK_EXT_line_rasterization)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetLineStippleEnableEXT-extendedDynamicState3LineStippleEnable-07421",
"text": " The extendedDynamicState3LineStippleEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetLineStippleEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetLineWidth": {
"core": [
{
"vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
"text": " If the wideLines
feature is not enabled, lineWidth
must be 1.0
"
},
{
"vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetLineWidth-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetLineStippleEXT": {
"(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776",
"text": " lineStippleFactor
must be in the range [1,256]"
},
{
"vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetLineStippleEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetFrontFace": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetFrontFace-None-03383",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetFrontFace-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetFrontFace-frontFace-parameter",
"text": " frontFace
must be a valid VkFrontFace value"
},
{
"vuid": "VUID-vkCmdSetFrontFace-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetFrontFace-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetFrontFace-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetCullMode": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetCullMode-None-03384",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetCullMode-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCullMode-cullMode-parameter",
"text": " cullMode
must be a valid combination of VkCullModeFlagBits values"
},
{
"vuid": "VUID-vkCmdSetCullMode-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCullMode-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCullMode-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetPolygonModeEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-extendedDynamicState3PolygonMode-07422",
"text": " The extendedDynamicState3PolygonMode
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-polygonMode-parameter",
"text": " polygonMode
must be a valid VkPolygonMode value"
},
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_EXT_extended_dynamic_state3)+!(VK_NV_fill_rectangle)": [
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07423",
"text": " If the fillModeNonSolid
feature is not enabled, polygonMode
must be VK_POLYGON_MODE_FILL
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_NV_fill_rectangle)": [
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-fillModeNonSolid-07424",
"text": " If the fillModeNonSolid
feature is not enabled, polygonMode
must be VK_POLYGON_MODE_FILL
or VK_POLYGON_MODE_FILL_RECTANGLE_NV
"
},
{
"vuid": "VUID-vkCmdSetPolygonModeEXT-polygonMode-07425",
"text": " If the VK_NV_fill_rectangle
extension is not enabled, polygonMode
must not be VK_POLYGON_MODE_FILL_RECTANGLE_NV
"
}
]
},
"vkCmdSetDepthBiasEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetDepthBiasEnable-None-04872",
"text": " The extendedDynamicState2
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdSetDepthBiasEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthBiasEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthBiasEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthBiasEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthBias": {
"core": [
{
"vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
"text": " If the depthBiasClamp
feature is not enabled, depthBiasClamp
must be 0.0
"
},
{
"vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthBias-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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"
}
]
},
"vkCmdSetConservativeRasterizationModeEXT": {
"(VK_EXT_conservative_rasterization)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-extendedDynamicState3ConservativeRasterizationMode-07426",
"text": " The extendedDynamicState3ConservativeRasterizationMode
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-conservativeRasterizationMode-parameter",
"text": " conservativeRasterizationMode
must be a valid VkConservativeRasterizationModeEXT value"
},
{
"vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetConservativeRasterizationModeEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetExtraPrimitiveOverestimationSizeEXT": {
"(VK_EXT_conservative_rasterization)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-extendedDynamicState3ExtraPrimitiveOverestimationSize-07427",
"text": " The extendedDynamicState3ExtraPrimitiveOverestimationSize
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-extraPrimitiveOverestimationSize-07428",
"text": " extraPrimitiveOverestimationSize
must be in the range of 0.0
to VkPhysicalDeviceConservativeRasterizationPropertiesEXT
::maxExtraPrimitiveOverestimationSize
inclusive"
},
{
"vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineDiscardRectangleStateCreateInfoEXT": {
"(VK_EXT_discard_rectangles)": [
{
"vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
"text": " discardRectangleCount
must be less than or equal to VkPhysicalDeviceDiscardRectanglePropertiesEXT
::maxDiscardRectangles
"
},
{
"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-firstDiscardRectangle-00585",
"text": " The sum of firstDiscardRectangle
and discardRectangleCount
must be less than or equal to VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles
"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
"text": " The x
and y
member of offset
in each VkRect2D element of pDiscardRectangles
must be greater than or equal to 0
"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
"text": " Evaluation of (offset.x
+ extent.width
) in each VkRect2D element of pDiscardRectangles
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
"text": " Evaluation of (offset.y
+ extent.height
) in each VkRect2D element of pDiscardRectangles
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
"text": " pDiscardRectangles
must be a valid pointer to an array of discardRectangleCount
VkRect2D structures"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
"text": " discardRectangleCount
must be greater than 0
"
}
],
"(VK_EXT_discard_rectangles)+(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-vkCmdSetDiscardRectangleEXT-viewportScissor2D-04788",
"text": " If this command is recorded in a secondary command buffer with VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled, then this function must not be called"
}
]
},
"vkCmdSetScissor": {
"core": [
{
"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 multiViewport
feature is not enabled, firstScissor
must be 0
"
},
{
"vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
"text": " If the multiViewport
feature is not enabled, scissorCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetScissor-x-00595",
"text": " The x
and y
members of offset
member of any element of pScissors
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 for any element of pScissors
"
},
{
"vuid": "VUID-vkCmdSetScissor-offset-00597",
"text": " Evaluation of (offset.y
+ extent.height
) must not cause a signed integer addition overflow for any element of pScissors
"
},
{
"vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
"text": " pScissors
must be a valid pointer to an array of scissorCount
VkRect2D structures"
},
{
"vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetScissor-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
"text": " scissorCount
must be greater than 0
"
}
],
"(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-vkCmdSetScissor-viewportScissor2D-04789",
"text": " If this command is recorded in a secondary command buffer with VkCommandBufferInheritanceViewportScissorInfoNV::viewportScissor2D
enabled, then this function must not be called"
}
]
},
"VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
"text": " If the multiViewport
feature is not enabled, exclusiveScissorCount
must be 0
or 1
"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
"text": " exclusiveScissorCount
must be less than or equal to VkPhysicalDeviceLimits
::maxViewports
"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
"text": " exclusiveScissorCount
must be 0
or greater than or equal to the viewportCount
member of VkPipelineViewportStateCreateInfo"
},
{
"vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV
"
}
]
},
"vkCmdSetExclusiveScissorNV": {
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
"text": " The exclusiveScissor
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
"text": " The sum of firstExclusiveScissor
and exclusiveScissorCount
must be between 1
and VkPhysicalDeviceLimits
::maxViewports
, inclusive"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
"text": " If the multiViewport
feature is not enabled, firstExclusiveScissor
must be 0
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
"text": " If the multiViewport
feature is not enabled, exclusiveScissorCount
must be 1
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
"text": " The x
and y
members of offset
in each member of pExclusiveScissors
must be greater than or equal to 0
"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
"text": " Evaluation of (offset.x
+ extent.width
) for each member of pExclusiveScissors
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
"text": " Evaluation of (offset.y
+ extent.height
) for each member of pExclusiveScissors
must not cause a signed integer addition overflow"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
"text": " pExclusiveScissors
must be a valid pointer to an array of exclusiveScissorCount
VkRect2D structures"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
"text": " exclusiveScissorCount
must be greater than 0
"
}
]
},
"vkCmdSetSampleMaskEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-extendedDynamicState3SampleMask-07342",
"text": " The extendedDynamicState3SampleMask
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-samples-parameter",
"text": " samples
must be a valid VkSampleCountFlagBits value"
},
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-pSampleMask-parameter",
"text": " pSampleMask
must be a valid pointer to an array of \\(\\lceil{\\mathit{samples} \\over 32}\\rceil\\) VkSampleMask
values"
},
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetSampleMaskEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetAlphaToCoverageEnableEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-extendedDynamicState3AlphaToCoverageEnable-07343",
"text": " The extendedDynamicState3AlphaToCoverageEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-alphaToOne-07344",
"text": " If the alphaToOne
feature is not enabled, alphaToOneEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetAlphaToCoverageEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetAlphaToOneEnableEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-extendedDynamicState3AlphaToOneEnable-07345",
"text": " The extendedDynamicState3AlphaToOneEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetAlphaToOneEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineDepthStencilStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
"text": " If the depthBounds
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-parameter",
"text": " flags
must be a valid combination of VkPipelineDepthStencilStateCreateFlagBits values"
},
{
"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"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::separateStencilMaskRef
is VK_FALSE
, and the value of VkPipelineDepthStencilStateCreateInfo::stencilTestEnable
is VK_TRUE
, and the value of VkPipelineRasterizationStateCreateInfo::cullMode
is VK_CULL_MODE_NONE
, the value of reference
in each of the VkStencilOpState structs in front
and back
must be the same"
}
],
"(VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access)": [
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderDepthAttachmentAccess-06463",
"text": " If the rasterizationOrderDepthAttachmentAccess
feature is not enabled, flags
must not include VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT
"
},
{
"vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-rasterizationOrderStencilAttachmentAccess-06464",
"text": " If the rasterizationOrderStencilAttachmentAccess
feature is not enabled, flags
must not include VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT
"
}
]
},
"vkCmdSetDepthBoundsTestEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetDepthBoundsTestEnable-None-03349",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthBoundsTestEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthBoundsTestEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthBounds": {
"(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
"text": " Unless the VK_EXT_depth_range_unrestricted
extension is enabled minDepthBounds
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
"text": " Unless the VK_EXT_depth_range_unrestricted
extension is enabled maxDepthBounds
must be between 0.0
and 1.0
, inclusive"
}
],
"!(VK_EXT_depth_range_unrestricted)": [
{
"vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
"text": " minDepthBounds
must be between 0.0
and 1.0
, inclusive"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
"text": " maxDepthBounds
must be between 0.0
and 1.0
, inclusive"
}
],
"core": [
{
"vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthBounds-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetStencilTestEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetStencilTestEnable-None-03350",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetStencilTestEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetStencilTestEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilTestEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetStencilTestEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetStencilOp": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetStencilOp-None-03351",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetStencilOp-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetStencilOp-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilOp-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilOp-failOp-parameter",
"text": " failOp
must be a valid VkStencilOp value"
},
{
"vuid": "VUID-vkCmdSetStencilOp-passOp-parameter",
"text": " passOp
must be a valid VkStencilOp value"
},
{
"vuid": "VUID-vkCmdSetStencilOp-depthFailOp-parameter",
"text": " depthFailOp
must be a valid VkStencilOp value"
},
{
"vuid": "VUID-vkCmdSetStencilOp-compareOp-parameter",
"text": " compareOp
must be a valid VkCompareOp value"
},
{
"vuid": "VUID-vkCmdSetStencilOp-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilOp-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetStencilOp-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetStencilCompareMask-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetStencilWriteMask": {
"core": [
{
"vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetStencilWriteMask-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetStencilReference": {
"core": [
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
"text": " faceMask
must be a valid combination of VkStencilFaceFlagBits values"
},
{
"vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
"text": " faceMask
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetStencilReference-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthTestEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetDepthTestEnable-None-03352",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetDepthTestEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthTestEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthTestEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthTestEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthCompareOp": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetDepthCompareOp-None-03353",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetDepthCompareOp-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthCompareOp-depthCompareOp-parameter",
"text": " depthCompareOp
must be a valid VkCompareOp value"
},
{
"vuid": "VUID-vkCmdSetDepthCompareOp-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthCompareOp-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthCompareOp-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetDepthWriteEnable": {
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_VERSION_1_3)": [
{
"vuid": "VUID-vkCmdSetDepthWriteEnable-None-03354",
"text": " The extendedDynamicState
feature must be enabled"
}
],
"(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdSetDepthWriteEnable-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetDepthWriteEnable-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetDepthWriteEnable-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetDepthWriteEnable-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
"(VK_NV_representative_fragment_test)": [
{
"vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV
"
}
]
},
"vkCmdSetRepresentativeFragmentTestEnableNV": {
"(VK_NV_representative_fragment_test)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-extendedDynamicState3RepresentativeFragmentTestEnable-07346",
"text": " The extendedDynamicState3RepresentativeFragmentTestEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetRepresentativeFragmentTestEnableNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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
"
}
]
},
"vkCmdSetCoverageToColorEnableNV": {
"(VK_NV_fragment_coverage_to_color)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetCoverageToColorEnableNV-extendedDynamicState3CoverageToColorEnable-07347",
"text": " The extendedDynamicState3CoverageToColorEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorEnableNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetCoverageToColorLocationNV": {
"(VK_NV_fragment_coverage_to_color)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetCoverageToColorLocationNV-extendedDynamicState3CoverageToColorLocation-07348",
"text": " The extendedDynamicState3CoverageToColorLocation
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoverageToColorLocationNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineCoverageReductionStateCreateInfoNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter",
"text": " coverageReductionMode
must be a valid VkCoverageReductionModeNV value"
}
]
},
"vkCmdSetCoverageReductionModeNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetCoverageReductionModeNV-extendedDynamicState3CoverageReductionMode-07349",
"text": " The extendedDynamicState3CoverageReductionMode
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoverageReductionModeNV-coverageReductionMode-parameter",
"text": " coverageReductionMode
must be a valid VkCoverageReductionModeNV value"
},
{
"vuid": "VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoverageReductionModeNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter",
"text": " pCombinationCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter",
"text": " If the value referenced by pCombinationCount
is not 0
, and pCombinations
is not NULL
, pCombinations
must be a valid pointer to an array of pCombinationCount
VkFramebufferMixedSamplesCombinationNV structures"
}
]
},
"VkFramebufferMixedSamplesCombinationNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV
"
},
{
"vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkPipelineCoverageModulationStateCreateInfoNV": {
"(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
"text": " If coverageModulationTableEnable
is VK_TRUE
, coverageModulationTableCount
must be equal to the number of rasterization samples divided by the number of color samples in the subpass"
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
"text": " coverageModulationMode
must be a valid VkCoverageModulationModeNV value"
}
]
},
"vkCmdSetCoverageModulationModeNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetCoverageModulationModeNV-extendedDynamicState3CoverageModulationMode-07350",
"text": " The extendedDynamicState3CoverageModulationMode
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationModeNV-coverageModulationMode-parameter",
"text": " coverageModulationMode
must be a valid VkCoverageModulationModeNV value"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationModeNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetCoverageModulationTableEnableNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-extendedDynamicState3CoverageModulationTableEnable-07351",
"text": " The extendedDynamicState3CoverageModulationTableEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableEnableNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetCoverageModulationTableNV": {
"(VK_NV_framebuffer_mixed_samples)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-extendedDynamicState3CoverageModulationTable-07352",
"text": " The extendedDynamicState3CoverageModulationTable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-pCoverageModulationTable-parameter",
"text": " pCoverageModulationTable
must be a valid pointer to an array of coverageModulationTableCount
float
values"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetCoverageModulationTableNV-coverageModulationTableCount-arraylength",
"text": " coverageModulationTableCount
must be greater than 0
"
}
]
},
"VkPipelineColorBlendStateCreateInfo": {
"core": [
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
"text": " If the independentBlend
feature is not enabled, all elements of pAttachments
must be identical"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
"text": " If the logicOp
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": " 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 VkPipelineColorBlendAdvancedStateCreateInfoEXT or VkPipelineColorWriteCreateInfoEXT"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-parameter",
"text": " flags
must be a valid combination of VkPipelineColorBlendStateCreateFlagBits values"
},
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
"text": " If attachmentCount
is not 0
, and pAttachments
is not NULL
, pAttachments
must be a valid pointer to an array of attachmentCount
valid VkPipelineColorBlendAttachmentState structures"
}
],
"(VK_EXT_rasterization_order_attachment_access,VK_ARM_rasterization_order_attachment_access)": [
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-rasterizationOrderColorAttachmentAccess-06465",
"text": " If the rasterizationOrderColorAttachmentAccess
feature is not enabled, flags
must not include VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT
"
}
],
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07353",
"text": " If any of VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
, VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
, or VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
are not set, pAttachments
must not be NULL
"
}
],
"!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-07354",
"text": " pAttachments
must not be NULL
"
}
]
},
"VkPipelineColorBlendAttachmentState": {
"core": [
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
"text": " If the dualSrcBlend
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 dualSrcBlend
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 dualSrcBlend
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 dualSrcBlend
feature is not enabled, dstAlphaBlendFactor
must not be VK_BLEND_FACTOR_SRC1_COLOR
, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
, VK_BLEND_FACTOR_SRC1_ALPHA
, or VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
"text": " srcColorBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
"text": " dstColorBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
"text": " colorBlendOp
must be a valid VkBlendOp value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
"text": " srcAlphaBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
"text": " dstAlphaBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
"text": " alphaBlendOp
must be a valid VkBlendOp value"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
"text": " colorWriteMask
must be a valid combination of VkColorComponentFlagBits values"
}
],
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
"text": " If either of colorBlendOp
or alphaBlendOp
is an advanced blend operation, then colorBlendOp
must equal alphaBlendOp
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlend
is VK_FALSE
and colorBlendOp
is an advanced blend operation, then colorBlendOp
must be the same for all attachments"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendIndependentBlend
is VK_FALSE
and alphaBlendOp
is an advanced blend operation, then alphaBlendOp
must be the same for all attachments"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
"text": " If VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendAllOperations
is VK_FALSE
, then colorBlendOp
must not be VK_BLEND_OP_ZERO_EXT
, VK_BLEND_OP_SRC_EXT
, VK_BLEND_OP_DST_EXT
, VK_BLEND_OP_SRC_OVER_EXT
, VK_BLEND_OP_DST_OVER_EXT
, VK_BLEND_OP_SRC_IN_EXT
, VK_BLEND_OP_DST_IN_EXT
, VK_BLEND_OP_SRC_OUT_EXT
, VK_BLEND_OP_DST_OUT_EXT
, VK_BLEND_OP_SRC_ATOP_EXT
, VK_BLEND_OP_DST_ATOP_EXT
, VK_BLEND_OP_XOR_EXT
, VK_BLEND_OP_INVERT_EXT
, VK_BLEND_OP_INVERT_RGB_EXT
, VK_BLEND_OP_LINEARDODGE_EXT
, VK_BLEND_OP_LINEARBURN_EXT
, VK_BLEND_OP_VIVIDLIGHT_EXT
, VK_BLEND_OP_LINEARLIGHT_EXT
, VK_BLEND_OP_PINLIGHT_EXT
, VK_BLEND_OP_HARDMIX_EXT
, VK_BLEND_OP_PLUS_EXT
, VK_BLEND_OP_PLUS_CLAMPED_EXT
, VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT
, VK_BLEND_OP_PLUS_DARKER_EXT
, VK_BLEND_OP_MINUS_EXT
, VK_BLEND_OP_MINUS_CLAMPED_EXT
, VK_BLEND_OP_CONTRAST_EXT
, VK_BLEND_OP_INVERT_OVG_EXT
, VK_BLEND_OP_RED_EXT
, VK_BLEND_OP_GREEN_EXT
, or VK_BLEND_OP_BLUE_EXT
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
"text": " If colorBlendOp
or alphaBlendOp
is an advanced blend operation, then colorAttachmentCount
of the subpass this pipeline is compiled against must be less than or equal to VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT::advancedBlendMaxColorAttachments
"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactors
is VK_FALSE
, srcColorBlendFactor
must not be VK_BLEND_FACTOR_CONSTANT_ALPHA
or VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
"
},
{
"vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactors
is VK_FALSE
, dstColorBlendFactor
must not be VK_BLEND_FACTOR_CONSTANT_ALPHA
or VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
"
}
]
},
"vkCmdSetColorBlendEnableEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-extendedDynamicState3ColorBlendEnable-07355",
"text": " The extendedDynamicState3ColorBlendEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-pColorBlendEnables-parameter",
"text": " pColorBlendEnables
must be a valid pointer to an array of attachmentCount
VkBool32
values"
},
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetColorBlendEnableEXT-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
}
]
},
"vkCmdSetColorBlendEquationEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-extendedDynamicState3ColorBlendEquation-07356",
"text": " The extendedDynamicState3ColorBlendEquation
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-pColorBlendEquations-parameter",
"text": " pColorBlendEquations
must be a valid pointer to an array of attachmentCount
valid VkColorBlendEquationEXT structures"
},
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetColorBlendEquationEXT-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
}
]
},
"VkColorBlendEquationEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkColorBlendEquationEXT-dualSrcBlend-07357",
"text": " If the dualSrcBlend
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-VkColorBlendEquationEXT-dualSrcBlend-07358",
"text": " If the dualSrcBlend
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-VkColorBlendEquationEXT-dualSrcBlend-07359",
"text": " If the dualSrcBlend
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-VkColorBlendEquationEXT-dualSrcBlend-07360",
"text": " If the dualSrcBlend
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-VkColorBlendEquationEXT-srcColorBlendFactor-parameter",
"text": " srcColorBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkColorBlendEquationEXT-dstColorBlendFactor-parameter",
"text": " dstColorBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkColorBlendEquationEXT-colorBlendOp-parameter",
"text": " colorBlendOp
must be a valid VkBlendOp value"
},
{
"vuid": "VUID-VkColorBlendEquationEXT-srcAlphaBlendFactor-parameter",
"text": " srcAlphaBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkColorBlendEquationEXT-dstAlphaBlendFactor-parameter",
"text": " dstAlphaBlendFactor
must be a valid VkBlendFactor value"
},
{
"vuid": "VUID-VkColorBlendEquationEXT-alphaBlendOp-parameter",
"text": " alphaBlendOp
must be a valid VkBlendOp value"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkColorBlendEquationEXT-colorBlendOp-07361",
"text": " colorBlendOp
and alphaBlendOp
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
"
}
],
"(VK_EXT_extended_dynamic_state3)+(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkColorBlendEquationEXT-constantAlphaColorBlendFactors-07362",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactors
is VK_FALSE
, srcColorBlendFactor
must not be VK_BLEND_FACTOR_CONSTANT_ALPHA
or VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
"
},
{
"vuid": "VUID-VkColorBlendEquationEXT-constantAlphaColorBlendFactors-07363",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactors
is VK_FALSE
, dstColorBlendFactor
must not be VK_BLEND_FACTOR_CONSTANT_ALPHA
or VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
"
}
]
},
"vkCmdSetColorWriteMaskEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-extendedDynamicState3ColorWriteMask-07364",
"text": " The extendedDynamicState3ColorWriteMask
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-pColorWriteMasks-parameter",
"text": " pColorWriteMasks
must be a valid pointer to an array of attachmentCount
valid combinations of VkColorComponentFlagBits values"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-pColorWriteMasks-requiredbitmask",
"text": " Each element of pColorWriteMasks
must not be 0
"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetColorWriteMaskEXT-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
}
]
},
"vkCmdSetBlendConstants": {
"core": [
{
"vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetBlendConstants-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
"text": " If the non-premultiplied source color property is not supported, srcPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
"text": " If the non-premultiplied destination color property is not supported, dstPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
"text": " If the correlated overlap property is not supported, blendOverlap
must be VK_BLEND_OVERLAP_UNCORRELATED_EXT
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
"text": " blendOverlap
must be a valid VkBlendOverlapEXT value"
}
]
},
"vkCmdSetColorBlendAdvancedEXT": {
"(VK_EXT_blend_operation_advanced)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-extendedDynamicState3ColorBlendAdvanced-07504",
"text": " The extendedDynamicState3ColorBlendAdvanced
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-pColorBlendAdvanced-parameter",
"text": " pColorBlendAdvanced
must be a valid pointer to an array of attachmentCount
valid VkColorBlendAdvancedEXT structures"
},
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetColorBlendAdvancedEXT-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
}
]
},
"VkColorBlendAdvancedEXT": {
"(VK_EXT_blend_operation_advanced)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkColorBlendAdvancedEXT-srcPremultiplied-07505",
"text": " If the non-premultiplied source color property is not supported, srcPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkColorBlendAdvancedEXT-dstPremultiplied-07506",
"text": " If the non-premultiplied destination color property is not supported, dstPremultiplied
must be VK_TRUE
"
},
{
"vuid": "VUID-VkColorBlendAdvancedEXT-blendOverlap-07507",
"text": " If the correlated overlap property is not supported, blendOverlap
must be VK_BLEND_OVERLAP_UNCORRELATED_EXT
"
},
{
"vuid": "VUID-VkColorBlendAdvancedEXT-advancedBlendOp-parameter",
"text": " advancedBlendOp
must be a valid VkBlendOp value"
},
{
"vuid": "VUID-VkColorBlendAdvancedEXT-blendOverlap-parameter",
"text": " blendOverlap
must be a valid VkBlendOverlapEXT value"
}
]
},
"vkCmdSetLogicOpEnableEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdSetLogicOpEnableEXT-extendedDynamicState3LogicOpEnable-07365",
"text": " The extendedDynamicState3LogicOpEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLogicOpEnableEXT-logicOp-07366",
"text": " If the logicOp
feature is not enabled, logicOpEnable
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetLogicOpEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdSetLogicOpEXT": {
"(VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdSetLogicOpEXT-None-04867",
"text": " The extendedDynamicState2LogicOp
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetLogicOpEXT-logicOp-parameter",
"text": " logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdSetLogicOpEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetLogicOpEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetLogicOpEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkPipelineColorWriteCreateInfoEXT": {
"(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-pAttachments-04801",
"text": " If the colorWriteEnable
feature is not enabled, all elements of pColorWriteEnables
must be VK_TRUE
"
},
{
"vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-04802",
"text": " attachmentCount
must be equal to the attachmentCount
member of the VkPipelineColorBlendStateCreateInfo
structure specified during pipeline creation"
},
{
"vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-attachmentCount-06655",
"text": " attachmentCount
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
},
{
"vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkPipelineColorWriteCreateInfoEXT-pColorWriteEnables-parameter",
"text": " If attachmentCount
is not 0
, pColorWriteEnables
must be a valid pointer to an array of attachmentCount
VkBool32
values"
}
]
},
"vkCmdSetColorWriteEnableEXT": {
"(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-None-04803",
"text": " The colorWriteEnable
feature must be enabled"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-06656",
"text": " attachmentCount
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-pColorWriteEnables-parameter",
"text": " pColorWriteEnables
must be a valid pointer to an array of attachmentCount
VkBool32
values"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdSetColorWriteEnableEXT-attachmentCount-arraylength",
"text": " attachmentCount
must be greater than 0
"
}
]
},
"vkGetFramebufferTilePropertiesQCOM": {
"(VK_QCOM_tile_properties)": [
{
"vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-framebuffer-parameter",
"text": " framebuffer
must be a valid VkFramebuffer handle"
},
{
"vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-pPropertiesCount-parameter",
"text": " pPropertiesCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-pProperties-parameter",
"text": " If the value referenced by pPropertiesCount
is not 0
, and pProperties
is not NULL
, pProperties
must be a valid pointer to an array of pPropertiesCount
VkTilePropertiesQCOM structures"
},
{
"vuid": "VUID-vkGetFramebufferTilePropertiesQCOM-framebuffer-parent",
"text": " framebuffer
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdDispatch": {
"core": [
{
"vuid": "VUID-vkCmdDispatch-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatch-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatch-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDispatch-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDispatch-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatch-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatch-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatch-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDispatch-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDispatch-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDispatch-groupCountX-00386",
"text": " groupCountX
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdDispatch-groupCountY-00387",
"text": " groupCountY
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
"text": " groupCountZ
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdDispatch-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDispatch-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDispatch-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDispatch-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatch-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatch-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDispatch-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDispatch-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDispatch-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDispatch-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatch-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDispatch-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatch-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point used by this command must not write to any resource"
},
{
"vuid": "VUID-vkCmdDispatch-commandBuffer-04617",
"text": " If any of the shader stages of the VkPipeline
bound to the pipeline bind point used by this command uses the RayQueryKHR
capability, then commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDispatch-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDispatch-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDispatch-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDispatch-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDispatch-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDispatch-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatch-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDispatch-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
]
},
"vkCmdDispatchIndirect": {
"core": [
{
"vuid": "VUID-vkCmdDispatchIndirect-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-02708",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-02709",
"text": " buffer
must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-offset-02710",
"text": " offset
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
"text": " The sum of offset
and the size of VkDispatchIndirectCommand
must be less than or equal to the size of buffer
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commonparent",
"text": " Both of buffer
, and commandBuffer
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDispatchIndirect-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
]
},
"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-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
"text": " baseGroupX
must be less than VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
"text": " baseGroupY
must be less than VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
"text": " baseGroupZ
must be less than VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
"text": " groupCountX
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] minus baseGroupX
"
},
{
"vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
"text": " groupCountY
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] minus baseGroupY
"
},
{
"vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
"text": " groupCountZ
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] minus baseGroupZ
"
},
{
"vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
"text": " If any of baseGroupX
, baseGroupY
, or baseGroupZ
are not zero, then the bound compute pipeline must have been created with the VK_PIPELINE_CREATE_DISPATCH_BASE
flag"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdDispatchBase-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDispatchBase-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDispatchBase-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdDispatchBase-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdDispatchBase-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdDispatchBase-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchBase-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdDispatchBase-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdDispatchBase-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-02712",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, any resource written to by the VkPipeline
object bound to the pipeline bind point used by this command must not be an unprotected resource"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-02713",
"text": " If commandBuffer
is a protected command buffer and protectedNoFault
is not supported, pipeline stages other than the framebuffer-space and compute stages in the VkPipeline
object bound to the pipeline bind point used by this command must not write to any resource"
},
{
"vuid": "VUID-vkCmdDispatchBase-commandBuffer-04617",
"text": " If any of the shader stages of the VkPipeline
bound to the pipeline bind point used by this command uses the RayQueryKHR
capability, then commandBuffer
must not be a protected command buffer"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdDispatchBase-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdDispatchBase-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdDispatchBase-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDispatchBase-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDispatchBase-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdDispatchBase-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_VERSION_1_1,VK_KHR_device_group)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdDispatchBase-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
]
},
"vkCmdSubpassShadingHUAWEI": {
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-04931",
"text": " This command must be called in a subpass with bind point VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI
. No draw commands can be called in the same subpass. Only one vkCmdSubpassShadingHUAWEI command can be called in a subpass"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics operations"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_HUAWEI_subpass_shading)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_HUAWEI_subpass_shading)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_HUAWEI_subpass_shading)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_HUAWEI_subpass_shading)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_HUAWEI_subpass_shading)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdSubpassShadingHUAWEI-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
]
},
"vkCreateIndirectCommandsLayoutNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929",
"text": " The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
::deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkIndirectCommandsLayoutCreateInfoNV structure"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter",
"text": " pIndirectCommandsLayout
must be a valid pointer to a VkIndirectCommandsLayoutNV handle"
}
]
},
"VkIndirectCommandsLayoutCreateInfoNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930",
"text": " The pipelineBindPoint
must be VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931",
"text": " tokenCount
must be greater than 0
and less than or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::maxIndirectCommandsTokenCount
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932",
"text": " If pTokens
contains an entry of VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
it must be the first element of the array and there must be only a single element of such token type"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933",
"text": " If pTokens
contains an entry of VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
there must be only a single element of such token type"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934",
"text": " All state tokens in pTokens
must occur before any work provoking tokens (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV
, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV
, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
, VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
)"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935",
"text": " The content of pTokens
must include one single work provoking token that is compatible with the pipelineBindPoint
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936",
"text": " streamCount
must be greater than 0
and less or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::maxIndirectCommandsStreamCount
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937",
"text": " each element of pStreamStrides
must be greater than `0`and less than or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::maxIndirectCommandsStreamStride
. Furthermore the alignment of each token input must be ensured"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkIndirectCommandsLayoutUsageFlagBitsNV values"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter",
"text": " pTokens
must be a valid pointer to an array of tokenCount
valid VkIndirectCommandsLayoutTokenNV structures"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter",
"text": " pStreamStrides
must be a valid pointer to an array of streamCount
uint32_t
values"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength",
"text": " tokenCount
must be greater than 0
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength",
"text": " streamCount
must be greater than 0
"
}
]
},
"vkDestroyIndirectCommandsLayoutNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938",
"text": " All submitted commands that refer to indirectCommandsLayout
must have completed execution"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939",
"text": " If VkAllocationCallbacks
were provided when indirectCommandsLayout
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940",
"text": " If no VkAllocationCallbacks
were provided when indirectCommandsLayout
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941",
"text": " The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
::deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter",
"text": " If indirectCommandsLayout
is not VK_NULL_HANDLE, indirectCommandsLayout
must be a valid VkIndirectCommandsLayoutNV handle"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent",
"text": " If indirectCommandsLayout
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"VkIndirectCommandsStreamNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02942",
"text": " The buffer
’s usage flag must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkIndirectCommandsStreamNV-offset-02943",
"text": " The offset
must be aligned to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::minIndirectCommandsBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02975",
"text": " If buffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkIndirectCommandsStreamNV-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
}
]
},
"VkBindShaderGroupIndirectCommandNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkBindShaderGroupIndirectCommandNV-None-02944",
"text": " The current bound graphics pipeline, as well as the pipelines it may reference, must have been created with VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
"
},
{
"vuid": "VUID-VkBindShaderGroupIndirectCommandNV-index-02945",
"text": " The index
must be within range of the accessible shader groups of the current bound graphics pipeline. See vkCmdBindPipelineShaderGroupNV for further details"
}
]
},
"VkBindIndexBufferIndirectCommandNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02946",
"text": " The buffer’s usage flag from which the address was acquired must have the VK_BUFFER_USAGE_INDEX_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947",
"text": " The bufferAddress
must be aligned to the indexType
used"
},
{
"vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02948",
"text": " Each element of the buffer from which the address was acquired and that is non-sparse must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
}
]
},
"VkBindVertexBufferIndirectCommandNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02949",
"text": " The buffer’s usage flag from which the address was acquired must have the VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02950",
"text": " Each element of the buffer from which the address was acquired and that is non-sparse must be bound completely and contiguously to a single VkDeviceMemory
object"
}
]
},
"VkIndirectCommandsLayoutTokenNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-stream-02951",
"text": " stream
must be smaller than VkIndirectCommandsLayoutCreateInfoNV
::streamCount
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-02952",
"text": " offset
must be less than or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::maxIndirectCommandsTokenOffset
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-06888",
"text": " offset
must be aligned to the scalar alignment of tokenType
or minIndirectCommandsBufferOffsetAlignment
, whichever is lower"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV
, vertexBindingUnit
must stay within device supported limits for the appropriate commands"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, pushconstantPipelineLayout
must be valid"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, pushconstantOffset
must be a multiple of 4
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, pushconstantSize
must be a multiple of 4
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, pushconstantOffset
must be less than VkPhysicalDeviceLimits
::maxPushConstantsSize
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, pushconstantSize
must be less than or equal to VkPhysicalDeviceLimits
::maxPushConstantsSize
minus pushconstantOffset
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, for each byte in the range specified by pushconstantOffset
and pushconstantSize
and for each shader stage in pushconstantShaderStageFlags
, there must be a push constant range in pushconstantPipelineLayout
that includes that byte and that stage"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, for each byte in the range specified by pushconstantOffset
and pushconstantSize
and for each push constant range that overlaps that byte, pushconstantShaderStageFlags
must include all stages in that push constant range’s VkPushConstantRange::stageFlags
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984",
"text": " If tokenType
is VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV
, indirectStateFlags
must not be 0
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter",
"text": " tokenType
must be a valid VkIndirectCommandsTokenTypeNV value"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter",
"text": " If pushconstantPipelineLayout
is not VK_NULL_HANDLE, pushconstantPipelineLayout
must be a valid VkPipelineLayout handle"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter",
"text": " pushconstantShaderStageFlags
must be a valid combination of VkShaderStageFlagBits values"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter",
"text": " indirectStateFlags
must be a valid combination of VkIndirectStateFlagBitsNV values"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter",
"text": " If indexTypeCount
is not 0
, pIndexTypes
must be a valid pointer to an array of indexTypeCount
valid VkIndexType values"
},
{
"vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter",
"text": " If indexTypeCount
is not 0
, pIndexTypeValues
must be a valid pointer to an array of indexTypeCount
uint32_t
values"
}
]
},
"vkGetGeneratedCommandsMemoryRequirementsNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906",
"text": " The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
::deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkGeneratedCommandsMemoryRequirementsInfoNV structure"
},
{
"vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter",
"text": " pMemoryRequirements
must be a valid pointer to a VkMemoryRequirements2 structure"
}
]
},
"VkGeneratedCommandsMemoryRequirementsInfoNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907",
"text": " maxSequencesCount
must be less or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::maxIndirectSequenceCount
"
},
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV
"
},
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter",
"text": " indirectCommandsLayout
must be a valid VkIndirectCommandsLayoutNV handle"
},
{
"vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent",
"text": " Both of indirectCommandsLayout
, and pipeline
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdExecuteGeneratedCommandsNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684",
"text": " The current render pass must be compatible with the renderPass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-subpass-02685",
"text": " The subpass index of the current render pass must be equal to the subpass
member of the VkGraphicsPipelineCreateInfo
structure specified when creating the VkPipeline
bound to VK_PIPELINE_BIND_POINT_GRAPHICS
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02686",
"text": " Every input attachment used by the current subpass must be bound to the pipeline via a descriptor set"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07468",
"text": " If any shader executed by this pipeline accesses an OpTypeImage
variable with a Dim
operand of SubpassData
, it must be decorated with an InputAttachmentIndex
that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-07469",
"text": " Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition be created with a VkImageView that is an attachment in the currently bound VkFramebuffer at an index that corresponds to a valid input attachment in the current subpass"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06537",
"text": " Memory backing image subresources used as attachments in the current render pass must not be written in any way other than as an attachment by this command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06538",
"text": " If any recorded command in the current subpass will write to an image subresource as an attachment, this command must not read from the memory backing that image subresource in any other way than as an attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06539",
"text": " If any recorded command in the current subpass will read from an image subresource used as an attachment in any way other than as an attachment, this command must not write to that image subresource as an attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06886",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the depth aspect, depth writes must be disabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06887",
"text": " If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-blendEnable-04727",
"text": " If rasterization is not disabled in the bound graphics pipeline, then for each color attachment in the subpass, if the corresponding image view’s format features do not contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
, then the blendEnable
member of the corresponding element of the pAttachments
member of pColorBlendState
must be VK_FALSE
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04007",
"text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must have either valid or VK_NULL_HANDLE buffers bound"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04008",
"text": " If the nullDescriptor
feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02721",
"text": " For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908",
"text": " If isPreprocessed
is VK_TRUE
then vkCmdPreprocessGeneratedCommandsNV must have already been executed on the device, using the same pGeneratedCommandsInfo
content as well as the content of the input buffers it references (all except VkGeneratedCommandsInfoNV::preprocessBuffer
). Furthermore pGeneratedCommandsInfo
`s indirectCommandsLayout
must have been created with the VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV
bit set"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909",
"text": " VkGeneratedCommandsInfoNV
::pipeline
must match the current bound pipeline at VkGeneratedCommandsInfoNV
::pipelineBindPoint
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911",
"text": " The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
::deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
"text": " pGeneratedCommandsInfo
must be a valid pointer to a valid VkGeneratedCommandsInfoNV structure"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderpass",
"text": " This command must only be called inside of a render pass instance"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_NV_device_generated_commands)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_device_generated_commands)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_device_generated_commands)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_device_generated_commands)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_device_generated_commands)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_device_generated_commands)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_device_generated_commands)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_device_generated_commands)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688",
"text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689",
"text": " If the bound graphics pipeline was created with VkPipelineSampleLocationsStateCreateInfoEXT::sampleLocationsEnable
set to VK_TRUE
and the current subpass has a depth/stencil attachment, then that attachment must have been created with the VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
bit set"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-06666",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
dynamic state enabled then vkCmdSetSampleLocationsEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the VkPipelineViewportStateCreateInfo
::scissorCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, then vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the scissorCount
parameter of vkCmdSetScissorWithCount
must match the VkPipelineViewportStateCreateInfo
::viewportCount
of the pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419",
"text": " If the bound graphics pipeline state was created with both the VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic states enabled then both vkCmdSetViewportWithCount and vkCmdSetScissorWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must match the scissorCount
parameter of vkCmdSetScissorWithCount
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportWScalingStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportWScalingNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportShadingRateImageStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportShadingRatePaletteNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportSwizzleStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled and a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure chained from VkPipelineViewportStateCreateInfo, then the bound graphics pipeline must have been created with VkPipelineViewportExclusiveScissorStateCreateInfoNV::exclusiveScissorCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04876",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE
dynamic state enabled then vkCmdSetRasterizerDiscardEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04877",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE
dynamic state enabled then vkCmdSetDepthBiasEnable must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-logicOp-04878",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LOGIC_OP_EXT
dynamic state enabled then vkCmdSetLogicOpEXT must have been called in the current command buffer prior to this drawing command and the logicOp
must be a valid VkLogicOp value"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04875",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
dynamic state enabled then vkCmdSetPatchControlPointsEXT must have been called in the current command buffer prior to this drawing command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04879",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
dynamic state enabled then vkCmdSetPrimitiveRestartEnableEXT must have been called in the current command buffer prior to this drawing command"
}
],
"(VK_NV_device_generated_commands)+(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552",
"text": " If the primitiveFragmentShadingRateWithMultipleViewports
limit is not supported, the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the PrimitiveShadingRateKHR
built-in, then vkCmdSetViewportWithCount must have been called in the current command buffer prior to this drawing command, and the viewportCount
parameter of vkCmdSetViewportWithCount
must be 1
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07284",
"text": " If rasterization is not disabled in the bound graphics pipeline, and none of the VK_AMD_mixed_attachment_samples
extension, the VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_device_generated_commands)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-04740",
"text": " If rasterization is not disabled in the bound graphics pipeline, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then VkPipelineMultisampleStateCreateInfo::rasterizationSamples
must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06172",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06173",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewMask-06178",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::viewMask
equal to VkRenderingInfo::viewMask
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06179",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound graphics pipeline must have been created with a VkPipelineRenderingCreateInfo::colorAttachmentCount
equal to VkRenderingInfo::colorAttachmentCount
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06180",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::colorAttachmentCount
greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a VkFormat equal to the corresponding element of VkPipelineRenderingCreateInfo::pColorAttachmentFormats
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06181",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::depthAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06182",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineRenderingCreateInfo::stencilAttachmentFormat
used to create the currently bound graphics pipeline must be equal to the VkFormat used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_1,VK_KHR_maintenance2)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06174",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06175",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06176",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pDepthAttachment
is not VK_NULL_HANDLE, and the layout
member of pDepthAttachment
is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL
, this command must not write any values to the depth attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06177",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the imageView
member of pStencilAttachment
is not VK_NULL_HANDLE, and the layout
member of pStencilAttachment
is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL
, this command must not write any values to the stencil attachment"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-attachmentCount-06667",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be greater than or equal to the VkPipelineColorBlendStateCreateInfo
::attachmentCount
of the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-attachmentCount-06815",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT
dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachmentCount
parameter of vkCmdSetColorWriteEnableEXT
must be less than or equal to the maxColorAttachments
member of VkPhysicalDeviceLimits
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06183",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentShadingRateAttachmentInfoKHR::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06184",
"text": " If the current render pass instance was begun with vkCmdBeginRendering and VkRenderingFragmentDensityMapAttachmentInfoEXT::imageView
was not VK_NULL_HANDLE, the currently bound graphics pipeline must have been created with VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06185",
"text": " If the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the corresponding element of the pColorAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06186",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06187",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created with a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of the depthStencilAttachmentSamples
member of VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-06198",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline must have been created with a VkGraphicsPipelineCreateInfo::renderPass
equal to VK_NULL_HANDLE"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07285",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07286",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07287",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the multisampledRenderToSingleSampled
feature is not enabled, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_KHR_dynamic_rendering)+(VK_AMD_mixed_attachment_samples,VK_NV_framebuffer_mixed_samples)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-colorAttachmentCount-06188",
"text": " If the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and the current render pass instance was begun with vkCmdBeginRendering with a VkRenderingInfo::colorAttachmentCount
parameter greater than 0
, then each element of the VkRenderingInfo::pColorAttachments
array with a imageView
not equal to VK_NULL_HANDLE must have been created with a sample count equal to the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pDepthAttachment-06189",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pDepthAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pDepthAttachment->imageView
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStencilAttachment-06190",
"text": " If the current render pass instance was begun with vkCmdBeginRendering, the currently bound pipeline was created without a VkAttachmentSampleCountInfoAMD or VkAttachmentSampleCountInfoNV structure, and VkRenderingInfo::pStencilAttachment->imageView
was not VK_NULL_HANDLE, the value of VkPipelineMultisampleStateCreateInfo::rasterizationSamples
used to create the currently bound graphics pipeline must be equal to the sample count used to create VkRenderingInfo::pStencilAttachment->imageView
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithRasterizerDiscard-06708",
"text": " If the primitivesGeneratedQueryWithRasterizerDiscard
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, rasterization discard must not be enabled."
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_primitives_generated_query)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-06709",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, the bound graphics pipeline must not have been created with a non-zero value in VkPipelineRasterizationStateStreamCreateInfoEXT
::rasterizationStream
."
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pColorBlendEnables-07470",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
state enabled and the last call to vkCmdSetColorBlendEnableEXT set pColorBlendEnables
for any attachment to VK_TRUE
, then for those attachments in the subpass the corresponding image view’s format features must contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07471",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and the current subpass does not use any color and/or depth/stencil attachments, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must follow the rules for a zero-attachment subpass"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-samples-07472",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the VkPipelineMultisampleStateCreateInfo::rasterizationSamples
parameter used to create the bound graphics pipeline"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-samples-07473",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
state and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, then the samples
parameter in the last call to vkCmdSetSampleMaskEXT must be greater or equal to the rasterizationSamples
parameter in the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07476",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic state enabled then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEnableEXT
calls must specify an enable for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07477",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
dynamic state enabled then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendEquationEXT
calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07478",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
dynamic state enabled then vkCmdSetColorWriteMaskEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorWriteMaskEXT
calls must specify the color write mask for all active color attachments in the current subpass"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-firstAttachment-07479",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
dynamic state enabled then vkCmdSetColorBlendAdvancedEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment
and attachmentCount
parameters of vkCmdSetColorBlendAdvancedEXT
calls must specify the advanced blend equations for all active color attachments in the current subpass where blending is enabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-advancedBlendMaxColorAttachments-07480",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT
and VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
dynamic states enabled and the last calls to vkCmdSetColorBlendEnableEXT and vkCmdSetColorBlendAdvancedEXT have enabled advanced blending, then the number of active color attachments in the current subpass must not exceed advancedBlendMaxColorAttachments
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+!(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07474",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and neither the VK_AMD_mixed_attachment_samples
nor the VK_NV_framebuffer_mixed_samples
extensions are enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-multisampledRenderToSingleSampled-07475",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, and none of the VK_AMD_mixed_attachment_samples
extension, VK_NV_framebuffer_mixed_samples
extension, or the multisampledRenderToSingleSampled
feature is enabled, then the rasterizationSamples
in the last call to vkCmdSetRasterizationSamplesEXT must be the same as the current subpass color and/or depth/stencil attachments"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitivesGeneratedQueryWithNonZeroStreams-07481",
"text": " If the primitivesGeneratedQueryWithNonZeroStreams
feature is not enabled and the VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT
query is active, and the bound graphics pipeline was created with VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT
state enabled, the last call to vkCmdSetRasterizationStreamEXT must have set the rasterizationStream
to zero"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_sample_locations)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07482",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state disabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
member of the VkPipelineMultisampleStateCreateInfo structure the bound graphics pipeline has been created with"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsPerPixel-07483",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
state enabled, then the sampleLocationsPerPixel
member of pSampleLocationsInfo
in the last call to vkCmdSetSampleLocationsEXT must equal the rasterizationSamples
parameter of the last call to vkCmdSetRasterizationSamplesEXT"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07484",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, 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"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07485",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.width
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.width
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07486",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
state enabled and the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, then the sampleLocationsInfo.sampleLocationGridSize.height
in the last call to vkCmdSetSampleLocationsEXT must evenly divide VkMultisamplePropertiesEXT::sampleLocationGridSize.height
as returned by vkGetPhysicalDeviceMultisamplePropertiesEXT with a samples
parameter equaling rasterizationSamples
"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-07487",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT
state enabled, and if sampleLocationsEnable
was VK_TRUE
in the last call to vkCmdSetSampleLocationsEnableEXT, the fragment shader code must not statically use the extended instruction InterpolateAtSample
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_NV_framebuffer_mixed_samples)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageModulationTableEnable-07488",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageModulationTableEnableNV set coverageModulationTableEnable
to VK_TRUE
, then the coverageModulationTableCount
parameter in the last call to vkCmdSetCoverageModulationTableNV must equal the current rasterizationSamples
divided by the number of color samples in the current subpass"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07489",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the currently bound pipeline state, then the current rasterizationSamples
must be the same as the sample count of the depth/stencil attachment"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07494",
"text": " If the VK_NV_framebuffer_mixed_samples
extension is enabled, and if the current subpass has any color attachments and rasterizationSamples
of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable
must be VK_FALSE
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_NV_fragment_coverage_to_color)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageToColorEnable-07490",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
state enabled and the last call to vkCmdSetCoverageToColorEnableNV set the coverageToColorEnable
to VK_TRUE
, then the current subpass must have a color attachment at the location selected by the last call to vkCmdSetCoverageToColorLocationNV 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
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-coverageReductionMode-07491",
"text": " If this VK_NV_coverage_reduction_mode
extension is enabled, the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV
and VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
states enabled, the current coverage reduction mode coverageReductionMode
, then the current rasterizationSamples
, and the sample counts for the color and depth/stencil attachments (if the subpass has them) must be a valid combination returned by vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_NV_viewport_swizzle)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-07492",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic state enabled, then the bound graphics pipeline must have been created with VkPipelineViewportSwizzleStateCreateInfoNV::viewportCount
greater or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-07493",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT
and VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV
dynamic states enabled then the viewportCount
parameter in the last call to vkCmdSetViewportSwizzleNV must be greater than or equal to the viewportCount
parameter in the last call to vkCmdSetViewportWithCount"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07495",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT
, then the stippledRectangularLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07496",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT
, then the stippledBresenhamLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07497",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT
, then the stippledSmoothLines
feature must be enabled"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stippledLineEnable-07498",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT
or VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT
dynamic states enabled, and if the current stippledLineEnable
state is VK_TRUE
and the current lineRasterizationMode
state is VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT
, then the stippledRectangularLines
feature must be enabled and VkPhysicalDeviceLimits::strictLines
must be VK_TRUE"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_extended_dynamic_state3)+(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-conservativePointAndLineRasterization-07499",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT
dynamic state enabled, conservativePointAndLineRasterization
is not supported, and the effective primitive topology output by the last pre-rasterization shader stage is a line or point, then the conservativeRasterizationMode
set by the last call to vkCmdSetConservativeRasterizationModeEXT must be VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stage-07073",
"text": " If the currently bound pipeline was created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_VERTEX_BIT
, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
or VK_SHADER_STAGE_GEOMETRY_BIT
, then Mesh Shader Queries must not be active"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-03420",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled then vkCmdSetPrimitiveTopologyEXT must have been called in the current command buffer prior to this drawing command, and the primitiveTopology
parameter of vkCmdSetPrimitiveTopologyEXT
must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-dynamicPrimitiveTopologyUnrestricted-07500",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
dynamic state enabled and the dynamicPrimitiveTopologyUnrestricted
is VK_FALSE
, then the primitiveTopology
parameter in the last call to vkCmdSetPrimitiveTopologyEXT must be of the same topology class as the pipeline VkPipelineInputAssemblyStateCreateInfo::topology
state"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04912",
"text": " If the bound graphics pipeline was created with both the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
and VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic states enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
},
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04913",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, but not the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this draw command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_NV_device_generated_commands)+(VK_VERSION_1_3,VK_EXT_extended_dynamic_state)+!(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pStrides-04884",
"text": " If the bound graphics pipeline was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT
dynamic state enabled, then vkCmdBindVertexBuffers2EXT must have been called in the current command buffer prior to this drawing command, and the pStrides
parameter of vkCmdBindVertexBuffers2EXT must not be NULL
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04914",
"text": " If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT
dynamic state enabled, then vkCmdSetVertexInputEXT must have been called in the current command buffer prior to this draw command"
}
],
"(VK_NV_device_generated_commands)+(VK_NV_mesh_shader,VK_EXT_mesh_shader)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-stage-06481",
"text": " The bound graphics pipeline must not have been created with the VkPipelineShaderStageCreateInfo::stage
member of an element of VkGraphicsPipelineCreateInfo::pStages
set to VK_SHADER_STAGE_TASK_BIT_EXT
or VK_SHADER_STAGE_MESH_BIT_EXT
"
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02910",
"text": " Transform feedback must not be active"
}
]
},
"VkGeneratedCommandsInfoNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-02912",
"text": " The provided pipeline
must match the pipeline bound at execution time"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913",
"text": " If the indirectCommandsLayout
uses a token of VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
, then the pipeline
must have been created with multiple shader groups"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914",
"text": " If the indirectCommandsLayout
uses a token of VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV
, then the pipeline
must have been created with VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV
set in VkGraphicsPipelineCreateInfo
::flags
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915",
"text": " If the indirectCommandsLayout
uses a token of VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV
, then the pipeline
`s VkPipelineLayout
must match the VkIndirectCommandsLayoutTokenNV::pushconstantPipelineLayout
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-02916",
"text": " streamCount
must match the indirectCommandsLayout
’s streamCount
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917",
"text": " sequencesCount
must be less or equal to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::maxIndirectSequenceCount
and VkGeneratedCommandsMemoryRequirementsInfoNV::maxSequencesCount
that was used to determine the preprocessSize
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918",
"text": " preprocessBuffer
must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set in its usage flag"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919",
"text": " preprocessOffset
must be aligned to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV::minIndirectCommandsBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971",
"text": " If preprocessBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920",
"text": " preprocessSize
must be at least equal to the memory requirement`s size returned by vkGetGeneratedCommandsMemoryRequirementsNV using the matching inputs (indirectCommandsLayout
, …) as within this structure"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921",
"text": " sequencesCountBuffer
can be set if the actual used count of sequences is sourced from the provided buffer. In that case the sequencesCount
serves as upper bound"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922",
"text": " If sequencesCountBuffer
is not VK_NULL_HANDLE, its usage flag must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923",
"text": " If sequencesCountBuffer
is not VK_NULL_HANDLE, sequencesCountOffset
must be aligned to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::minSequencesCountBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972",
"text": " If sequencesCountBuffer
is not VK_NULL_HANDLE and is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924",
"text": " If indirectCommandsLayout
’s VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV
is set, sequencesIndexBuffer
must be set otherwise it must be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925",
"text": " If sequencesIndexBuffer
is not VK_NULL_HANDLE, its usage flag must have the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926",
"text": " If sequencesIndexBuffer
is not VK_NULL_HANDLE, sequencesIndexOffset
must be aligned to VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV
::minSequencesIndexBufferOffsetAlignment
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973",
"text": " If sequencesIndexBuffer
is not VK_NULL_HANDLE and is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter",
"text": " pipelineBindPoint
must be a valid VkPipelineBindPoint value"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-parameter",
"text": " pipeline
must be a valid VkPipeline handle"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter",
"text": " indirectCommandsLayout
must be a valid VkIndirectCommandsLayoutNV handle"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-pStreams-parameter",
"text": " pStreams
must be a valid pointer to an array of streamCount
valid VkIndirectCommandsStreamNV structures"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter",
"text": " preprocessBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter",
"text": " If sequencesCountBuffer
is not VK_NULL_HANDLE, sequencesCountBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter",
"text": " If sequencesIndexBuffer
is not VK_NULL_HANDLE, sequencesIndexBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength",
"text": " streamCount
must be greater than 0
"
},
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-commonparent",
"text": " Each of indirectCommandsLayout
, pipeline
, preprocessBuffer
, sequencesCountBuffer
, and sequencesIndexBuffer
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_device_generated_commands)+(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07078",
"text": " If the indirectCommandsLayout
uses a token of VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV
, then the pipeline
must contain a shader stage using the MeshNV
{ExecutionModel}."
}
],
"(VK_NV_device_generated_commands)+(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-07079",
"text": " If the indirectCommandsLayout
uses a token of VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV
, then the pipeline
must contain a shader stage using the MeshEXT
{ExecutionModel}."
}
]
},
"vkCmdPreprocessGeneratedCommandsNV": {
"(VK_NV_device_generated_commands)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974",
"text": " commandBuffer
must not be a protected command buffer"
}
],
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927",
"text": " pGeneratedCommandsInfo
`s indirectCommandsLayout
must have been created with the VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV
bit set"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928",
"text": " The VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV
::deviceGeneratedCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter",
"text": " pGeneratedCommandsInfo
must be a valid pointer to a valid VkGeneratedCommandsInfoNV structure"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"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"
}
]
},
"vkGetDeviceImageSparseMemoryRequirements": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkDeviceImageMemoryRequirements structure"
},
{
"vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
"text": " pSparseMemoryRequirementCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetDeviceImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
"text": " If the value referenced by pSparseMemoryRequirementCount
is not 0
, and pSparseMemoryRequirements
is not NULL
, pSparseMemoryRequirements
must be a valid pointer to an array of pSparseMemoryRequirementCount
VkSparseImageMemoryRequirements2 structures"
}
]
},
"VkImageSparseMemoryRequirementsInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2
"
},
{
"vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
"text": " image
must be a valid VkImage handle"
}
]
},
"VkSparseImageMemoryRequirements2": {
"(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
{
"vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2
"
},
{
"vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkSparseMemoryBind": {
"core": [
{
"vuid": "VUID-VkSparseMemoryBind-memory-01096",
"text": " If memory
is not VK_NULL_HANDLE, memory
and memoryOffset
must match the memory requirements of the resource, as described in section Resource Memory Association"
},
{
"vuid": "VUID-VkSparseMemoryBind-memory-01097",
"text": " If memory
is not VK_NULL_HANDLE, memory
must not have been created with a memory type that reports VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
bit set"
},
{
"vuid": "VUID-VkSparseMemoryBind-size-01098",
"text": " size
must be greater than 0
"
},
{
"vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
"text": " resourceOffset
must be less than the size of the resource"
},
{
"vuid": "VUID-VkSparseMemoryBind-size-01100",
"text": " size
must be less than or equal to the size of the resource minus resourceOffset
"
},
{
"vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
"text": " memoryOffset
must be less than the size of memory
"
},
{
"vuid": "VUID-VkSparseMemoryBind-size-01102",
"text": " size
must be less than or equal to the size of memory
minus memoryOffset
"
},
{
"vuid": "VUID-VkSparseMemoryBind-memory-parameter",
"text": " If memory
is not VK_NULL_HANDLE, memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-VkSparseMemoryBind-flags-parameter",
"text": " flags
must be a valid combination of VkSparseMemoryBindFlagBits values"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkSparseMemoryBind-memory-02730",
"text": " If memory
was created with VkExportMemoryAllocateInfo::handleTypes
not equal to 0
, at least one handle type it contained must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
or VkExternalMemoryImageCreateInfo::handleTypes
when the resource was created"
},
{
"vuid": "VUID-VkSparseMemoryBind-memory-02731",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryBufferCreateInfo::handleTypes
or VkExternalMemoryImageCreateInfo::handleTypes
when the resource was created"
}
]
},
"VkSparseBufferMemoryBindInfo": {
"core": [
{
"vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
"text": " buffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
"text": " pBinds
must be a valid pointer to an array of bindCount
valid VkSparseMemoryBind structures"
},
{
"vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
"text": " bindCount
must be greater than 0
"
}
]
},
"VkSparseImageOpaqueMemoryBindInfo": {
"core": [
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
"text": " If the flags
member of any element of pBinds
contains VK_SPARSE_MEMORY_BIND_METADATA_BIT
, the binding range defined must be within the mip tail region of the metadata aspect of image
"
},
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
"text": " image
must be a valid VkImage handle"
},
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
"text": " pBinds
must be a valid pointer to an array of bindCount
valid VkSparseMemoryBind structures"
},
{
"vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
"text": " bindCount
must be greater than 0
"
}
]
},
"VkSparseImageMemoryBindInfo": {
"core": [
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
"text": " The subresource.mipLevel
member of each element of pBinds
must be less than the mipLevels
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
"text": " The subresource.arrayLayer
member of each element of pBinds
must be less than the arrayLayers
specified in VkImageCreateInfo when image
was created"
},
{
"vuid": "VUID-VkSparseImageMemoryBindInfo-image-02901",
"text": " image
must have been created with VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
set"
},
{
"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 sparseResidencyAliased
feature is not enabled, and if any other resources are bound to ranges of memory
, the range of memory
being bound must not overlap with those bound ranges"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
"text": " memory
and memoryOffset
must match the memory requirements of the calling command’s image
, as described in section Resource Memory Association"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
"text": " subresource
must be a valid image subresource for image
(see Image Views)"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
"text": " offset.x
must be a multiple of the sparse image block width (VkSparseImageFormatProperties
::imageGranularity.width
) of the image"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
"text": " extent.width
must either be a multiple of the sparse image block width of the image, or else (extent.width
+ offset.x
) must equal the width of the image subresource"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
"text": " offset.y
must be a multiple of the sparse image block height (VkSparseImageFormatProperties
::imageGranularity.height
) of the image"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
"text": " extent.height
must either be a multiple of the sparse image block height of the image, or else (extent.height
+ offset.y
) must equal the height of the image subresource"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
"text": " offset.z
must be a multiple of the sparse image block depth (VkSparseImageFormatProperties
::imageGranularity.depth
) of the image"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
"text": " extent.depth
must either be a multiple of the sparse image block depth of the image, or else (extent.depth
+ offset.z
) must equal the depth of the image subresource"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
"text": " subresource
must be a valid VkImageSubresource structure"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
"text": " If memory
is not VK_NULL_HANDLE, memory
must be a valid VkDeviceMemory handle"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
"text": " flags
must be a valid combination of VkSparseMemoryBindFlagBits values"
}
],
"(VK_VERSION_1_1,VK_KHR_external_memory)": [
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-02732",
"text": " If memory
was created with VkExportMemoryAllocateInfo::handleTypes
not equal to 0
, at least one handle type it contained must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when the image was created"
},
{
"vuid": "VUID-VkSparseImageMemoryBind-memory-02733",
"text": " If memory
was created by a memory import operation, the external handle type of the imported memory must also have been set in VkExternalMemoryImageCreateInfo::handleTypes
when image
was created"
}
]
},
"vkQueueBindSparse": {
"core": [
{
"vuid": "VUID-vkQueueBindSparse-fence-01113",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be unsignaled"
},
{
"vuid": "VUID-vkQueueBindSparse-fence-01114",
"text": " If fence
is not VK_NULL_HANDLE, fence
must not be associated with any other queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
"text": " Each element of the pSignalSemaphores
member of each element of pBindInfo
must be unsignaled when the semaphore signal operation it defines is executed on the device"
},
{
"vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
"text": " When a semaphore wait operation referring to a binary semaphore defined by any element of the pWaitSemaphores
member of any element of pBindInfo
executes on queue
, there must be no other queues waiting on the same semaphore"
},
{
"vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
"text": " All elements of the pWaitSemaphores
member of all elements of the pBindInfo
parameter referring to a binary semaphore must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution"
},
{
"vuid": "VUID-vkQueueBindSparse-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
"text": " If bindInfoCount
is not 0
, pBindInfo
must be a valid pointer to an array of bindInfoCount
valid VkBindSparseInfo structures"
},
{
"vuid": "VUID-vkQueueBindSparse-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-vkQueueBindSparse-queuetype",
"text": " The queue
must support sparse binding operations"
},
{
"vuid": "VUID-vkQueueBindSparse-commonparent",
"text": " Both of fence
, and queue
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245",
"text": " All elements of the pWaitSemaphores
member of all elements of pBindInfo
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must have also been submitted for execution"
}
]
},
"VkBindSparseInfo": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03246",
"text": " If any element of pWaitSemaphores
or pSignalSemaphores
was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
then the pNext
chain must include a VkTimelineSemaphoreSubmitInfo structure"
},
{
"vuid": "VUID-VkBindSparseInfo-pNext-03247",
"text": " If the pNext
chain of this structure includes a VkTimelineSemaphoreSubmitInfo structure and any element of pWaitSemaphores
was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
then its waitSemaphoreValueCount
member must equal waitSemaphoreCount
"
},
{
"vuid": "VUID-VkBindSparseInfo-pNext-03248",
"text": " If the pNext
chain of this structure includes a VkTimelineSemaphoreSubmitInfo structure and any element of pSignalSemaphores
was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
then its signalSemaphoreValueCount
member must equal signalSemaphoreCount
"
},
{
"vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03249",
"text": " For each element of pSignalSemaphores
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
the corresponding element of VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues
must have a value greater than the current value of the semaphore when the semaphore signal operation is executed"
},
{
"vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03250",
"text": " For each element of pWaitSemaphores
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
the corresponding element of VkTimelineSemaphoreSubmitInfo::pWaitSemaphoreValues
must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference
"
},
{
"vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03251",
"text": " For each element of pSignalSemaphores
created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE
the corresponding element of VkTimelineSemaphoreSubmitInfo::pSignalSemaphoreValues
must have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than maxTimelineSemaphoreValueDifference
"
}
],
"core": [
{
"vuid": "VUID-VkBindSparseInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
"
},
{
"vuid": "VUID-VkBindSparseInfo-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 VkDeviceGroupBindSparseInfo or VkTimelineSemaphoreSubmitInfo"
},
{
"vuid": "VUID-VkBindSparseInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkDeviceGroupBindSparseInfo": {
"(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
"text": " resourceDeviceIndex
and memoryDeviceIndex
must both be valid device indices"
},
{
"vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
"text": " Each memory allocation bound in this batch must have allocated an instance for memoryDeviceIndex
"
},
{
"vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO
"
}
]
},
"vkCreateAndroidSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_android_surface)": [
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkAndroidSurfaceCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkAndroidSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_android_surface)": [
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
"text": " window
must point to a valid Android ANativeWindow
"
},
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateWaylandSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkWaylandSurfaceCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkWaylandSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
"text": " display
must point to a valid Wayland wl_display
"
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
"text": " surface
must point to a valid Wayland wl_surface
"
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateWin32SurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkWin32SurfaceCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkWin32SurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
"text": " hinstance
must be a valid Win32 HINSTANCE
"
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
"text": " hwnd
must be a valid Win32 HWND
"
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateXcbSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkXcbSurfaceCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkXcbSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
"text": " connection
must point to a valid X11 xcb_connection_t
"
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
"text": " window
must be a valid X11 xcb_window_t
"
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateXlibSurfaceKHR": {
"(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkXlibSurfaceCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkXlibSurfaceCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
"text": " dpy
must point to a valid Xlib Display
"
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
"text": " window
must be a valid Xlib Window
"
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateDirectFBSurfaceEXT": {
"(VK_KHR_surface)+(VK_EXT_directfb_surface)": [
{
"vuid": "VUID-vkCreateDirectFBSurfaceEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateDirectFBSurfaceEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDirectFBSurfaceCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateDirectFBSurfaceEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateDirectFBSurfaceEXT-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkDirectFBSurfaceCreateInfoEXT": {
"(VK_KHR_surface)+(VK_EXT_directfb_surface)": [
{
"vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-dfb-04117",
"text": " dfb
must point to a valid DirectFB IDirectFB
"
},
{
"vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-surface-04118",
"text": " surface
must point to a valid DirectFB IDirectFBSurface
"
},
{
"vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateImagePipeSurfaceFUCHSIA": {
"(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkImagePipeSurfaceCreateInfoFUCHSIA structure"
},
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkImagePipeSurfaceCreateInfoFUCHSIA": {
"(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-04863",
"text": " imagePipeHandle
must be a valid zx_handle_t
"
},
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA
"
},
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateStreamDescriptorSurfaceGGP": {
"(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkStreamDescriptorSurfaceCreateInfoGGP structure"
},
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkStreamDescriptorSurfaceCreateInfoGGP": {
"(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681",
"text": " streamDescriptor
must be a valid GgpStreamDescriptor
"
},
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP
"
},
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateIOSSurfaceMVK": {
"(VK_KHR_surface)+(VK_MVK_ios_surface)": [
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkIOSSurfaceCreateInfoMVK structure"
},
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkIOSSurfaceCreateInfoMVK": {
"(VK_KHR_surface)+(VK_MVK_ios_surface)": [
{
"vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-04143",
"text": " If pView
is a CAMetalLayer
object, it must be a valid CAMetalLayer
"
},
{
"vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
"text": " If pView
is a UIView
object, it must be a valid UIView
, must be backed by a CALayer
object of type CAMetalLayer
, and vkCreateIOSSurfaceMVK must be called on the main thread"
},
{
"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-04144",
"text": " If pView
is a CAMetalLayer
object, it must be a valid CAMetalLayer
"
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
"text": " If pView
is an NSView
object, it must be a valid NSView
, must be backed by a CALayer
object of type CAMetalLayer
, and vkCreateMacOSSurfaceMVK must be called on the main thread"
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
"
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateViSurfaceNN": {
"(VK_KHR_surface)+(VK_NN_vi_surface)": [
{
"vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkViSurfaceCreateInfoNN structure"
},
{
"vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkViSurfaceCreateInfoNN": {
"(VK_KHR_surface)+(VK_NN_vi_surface)": [
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
"text": " window
must be a valid nn
::vi
::NativeWindowHandle
"
},
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN
"
},
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateMetalSurfaceEXT": {
"(VK_KHR_surface)+(VK_EXT_metal_surface)": [
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkMetalSurfaceCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkMetalSurfaceCreateInfoEXT": {
"(VK_KHR_surface)+(VK_EXT_metal_surface)": [
{
"vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCreateScreenSurfaceQNX": {
"(VK_KHR_surface)+(VK_QNX_screen_surface)": [
{
"vuid": "VUID-vkCreateScreenSurfaceQNX-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateScreenSurfaceQNX-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkScreenSurfaceCreateInfoQNX structure"
},
{
"vuid": "VUID-vkCreateScreenSurfaceQNX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateScreenSurfaceQNX-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkScreenSurfaceCreateInfoQNX": {
"(VK_KHR_surface)+(VK_QNX_screen_surface)": [
{
"vuid": "VUID-VkScreenSurfaceCreateInfoQNX-context-04741",
"text": " context
must point to a valid QNX Screen struct
_screen_context"
},
{
"vuid": "VUID-VkScreenSurfaceCreateInfoQNX-window-04742",
"text": " window
must point to a valid QNX Screen struct
_screen_window"
},
{
"vuid": "VUID-VkScreenSurfaceCreateInfoQNX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX
"
},
{
"vuid": "VUID-VkScreenSurfaceCreateInfoQNX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkScreenSurfaceCreateInfoQNX-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"
},
{
"vuid": "VUID-vkAcquireXlibDisplayEXT-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"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"
}
]
},
"vkAcquireWinrtDisplayNV": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_NV_acquire_winrt_display)": [
{
"vuid": "VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkAcquireWinrtDisplayNV-display-parameter",
"text": " display
must be a valid VkDisplayKHR handle"
},
{
"vuid": "VUID-vkAcquireWinrtDisplayNV-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"vkGetWinrtDisplayNV": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_NV_acquire_winrt_display)": [
{
"vuid": "VUID-vkGetWinrtDisplayNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetWinrtDisplayNV-pDisplay-parameter",
"text": " pDisplay
must be a valid pointer to a VkDisplayKHR handle"
}
]
},
"vkAcquireDrmDisplayEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_drm_display)": [
{
"vuid": "VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkAcquireDrmDisplayEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR handle"
},
{
"vuid": "VUID-vkAcquireDrmDisplayEXT-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"vkGetDrmDisplayEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_drm_display)": [
{
"vuid": "VUID-vkGetDrmDisplayEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetDrmDisplayEXT-display-parameter",
"text": " display
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"
},
{
"vuid": "VUID-vkReleaseDisplayEXT-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"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"
},
{
"vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"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"
},
{
"vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"VkDisplayModeProperties2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR
"
},
{
"vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkDisplayModeParametersKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
"text": " The width
member of visibleRegion
must be greater than 0
"
},
{
"vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
"text": " The height
member of visibleRegion
must be greater than 0
"
},
{
"vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
"text": " refreshRate
must be greater than 0
"
}
]
},
"vkCreateDisplayModeKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
"text": " display
must be a valid VkDisplayKHR handle"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDisplayModeCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
"text": " pMode
must be a valid pointer to a VkDisplayModeKHR handle"
},
{
"vuid": "VUID-vkCreateDisplayModeKHR-display-parent",
"text": " display
must have been created, allocated, or retrieved from physicalDevice
"
}
]
},
"VkDisplayModeCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
"text": " parameters
must be a valid VkDisplayModeParametersKHR structure"
}
]
},
"vkGetDisplayPlaneCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_display)": [
{
"vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
"text": " mode
must be a valid VkDisplayModeKHR handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
"text": " pCapabilities
must be a valid pointer to a VkDisplayPlaneCapabilitiesKHR structure"
}
]
},
"vkGetDisplayPlaneCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
"text": " pDisplayPlaneInfo
must be a valid pointer to a valid VkDisplayPlaneInfo2KHR structure"
},
{
"vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
"text": " pCapabilities
must be a valid pointer to a VkDisplayPlaneCapabilities2KHR structure"
}
]
},
"VkDisplayPlaneInfo2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR
"
},
{
"vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
"text": " mode
must be a valid VkDisplayModeKHR handle"
}
]
},
"VkDisplayPlaneCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
{
"vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR
"
},
{
"vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkDisplayPowerControlEXT": {
"(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
{
"vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
"text": " display
must be a valid VkDisplayKHR handle"
},
{
"vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
"text": " pDisplayPowerInfo
must be a valid pointer to a valid VkDisplayPowerInfoEXT structure"
},
{
"vuid": "VUID-vkDisplayPowerControlEXT-commonparent",
"text": " Both of device
, and display
must have been created, allocated, or retrieved from the same VkPhysicalDevice"
}
]
},
"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 one of the bits present in the supportedAlpha
member of VkDisplayPlaneCapabilitiesKHR
for the display plane corresponding to displayMode
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-06740",
"text": " transform
must be one of the bits present in the supportedTransforms
member of VkDisplayPropertiesKHR
for the display corresponding to displayMode
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
"text": " The width
and height
members of imageExtent
must be less than or equal to VkPhysicalDeviceLimits::maxImageDimension2D
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
"text": " displayMode
must be a valid VkDisplayModeKHR handle"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
"text": " transform
must be a valid VkSurfaceTransformFlagBitsKHR value"
},
{
"vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
"text": " alphaMode
must be a valid VkDisplayPlaneAlphaFlagBitsKHR value"
}
]
},
"vkCreateHeadlessSurfaceEXT": {
"(VK_KHR_surface)+(VK_EXT_headless_surface)": [
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkHeadlessSurfaceCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter",
"text": " pSurface
must be a valid pointer to a VkSurfaceKHR handle"
}
]
},
"VkHeadlessSurfaceCreateInfoEXT": {
"(VK_KHR_surface)+(VK_EXT_headless_surface)": [
{
"vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkGetPhysicalDeviceSurfaceSupportKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
"text": " pSupported
must be a valid pointer to a VkBool32
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
"text": " display
must be a valid pointer to a wl_display
value"
}
]
},
"vkGetPhysicalDeviceWin32PresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
}
]
},
"vkGetPhysicalDeviceXcbPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
"text": " connection
must be a valid pointer to an xcb_connection_t
value"
}
]
},
"vkGetPhysicalDeviceXlibPresentationSupportKHR": {
"(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
"text": " dpy
must be a valid pointer to a Display
value"
}
]
},
"vkGetPhysicalDeviceDirectFBPresentationSupportEXT": {
"(VK_KHR_surface)+(VK_EXT_directfb_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-queueFamilyIndex-04119",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-dfb-parameter",
"text": " dfb
must be a valid pointer to an IDirectFB
value"
}
]
},
"vkGetPhysicalDeviceScreenPresentationSupportQNX": {
"(VK_KHR_surface)+(VK_QNX_screen_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-queueFamilyIndex-04743",
"text": " queueFamilyIndex
must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties
for the given physicalDevice
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceScreenPresentationSupportQNX-window-parameter",
"text": " window
must be a valid pointer to a _screen_window
value"
}
]
},
"vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06523",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06211",
"text": " surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
"text": " pSurfaceCapabilities
must be a valid pointer to a VkSurfaceCapabilitiesKHR structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
"text": " Both of physicalDevice
, and surface
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06520",
"text": " pSurfaceInfo->surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-06210",
"text": " pSurfaceInfo->surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671",
"text": " If a VkSurfaceCapabilitiesFullScreenExclusiveEXT structure is included in the pNext
chain of pSurfaceCapabilities
, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the pNext
chain of pSurfaceInfo
"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
"text": " pSurfaceCapabilities
must be a valid pointer to a VkSurfaceCapabilities2KHR structure"
}
]
},
"VkPhysicalDeviceSurfaceInfo2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface+VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672",
"text": " If the pNext
chain includes a VkSurfaceFullScreenExclusiveInfoEXT structure with its fullScreenExclusive
member set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
, and surface
was created using vkCreateWin32SurfaceKHR, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the pNext
chain"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface+VK_EXT_full_screen_exclusive)+(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pSurfaceInfo-06526",
"text": " When passed as the pSurfaceInfo
parameter of vkGetPhysicalDeviceSurfaceCapabilities2KHR, if the VK_GOOGLE_surfaceless_query
extension is enabled and the pNext
chain of the pSurfaceCapabilities
parameter includes VkSurfaceProtectedCapabilitiesKHR
, then surface
can be VK_NULL_HANDLE. Otherwise, surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pSurfaceInfo-06527",
"text": " When passed as the pSurfaceInfo
parameter of vkGetPhysicalDeviceSurfaceFormats2KHR, if the VK_GOOGLE_surfaceless_query
extension is enabled, then surface
can be VK_NULL_HANDLE. Otherwise, surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pSurfaceInfo-06528",
"text": " When passed as the pSurfaceInfo
parameter of vkGetPhysicalDeviceSurfacePresentModes2EXT, if the VK_GOOGLE_surfaceless_query
extension is enabled, then surface
can be VK_NULL_HANDLE. Otherwise, surface
must be a valid VkSurfaceKHR handle"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface+VK_EXT_full_screen_exclusive)+!(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-06529",
"text": " surface
must be a valid VkSurfaceKHR handle"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR
"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkSurfaceFullScreenExclusiveInfoEXT or VkSurfaceFullScreenExclusiveWin32InfoEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
"text": " If surface
is not VK_NULL_HANDLE, surface
must be a valid VkSurfaceKHR handle"
}
]
},
"VkSurfaceFullScreenExclusiveInfoEXT": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT
"
},
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter",
"text": " fullScreenExclusive
must be a valid VkFullScreenExclusiveEXT value"
}
]
},
"VkSurfaceFullScreenExclusiveWin32InfoEXT": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)+(VK_KHR_win32_surface)": [
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673",
"text": " hmonitor
must be a valid HMONITOR
"
},
{
"vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT
"
}
]
},
"VkSurfaceCapabilities2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
{
"vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR
"
},
{
"vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDisplayNativeHdrSurfaceCapabilitiesAMD, VkSharedPresentSurfaceCapabilitiesKHR, VkSurfaceCapabilitiesFullScreenExclusiveEXT, VkSurfaceCapabilitiesPresentBarrierNV, or VkSurfaceProtectedCapabilitiesKHR"
},
{
"vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkSurfaceProtectedCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_surface_protected_capabilities)": [
{
"vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR
"
}
]
},
"VkSharedPresentSurfaceCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR
"
}
]
},
"VkDisplayNativeHdrSurfaceCapabilitiesAMD": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_AMD_display_native_hdr)": [
{
"vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD
"
}
]
},
"VkSurfaceCapabilitiesFullScreenExclusiveEXT": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT
"
}
]
},
"VkSurfaceCapabilitiesPresentBarrierNV": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_NV_present_barrier)": [
{
"vuid": "VUID-VkSurfaceCapabilitiesPresentBarrierNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV
"
}
]
},
"vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
"(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06523",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06211",
"text": " surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
},
{
"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_BIT_EXT
unless the surface queried is a display surface"
},
{
"vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
"
},
{
"vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceSurfaceFormatsKHR": {
"(VK_KHR_surface)+(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06524",
"text": " If the VK_GOOGLE_surfaceless_query
extension is not enabled, surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06525",
"text": " If surface
is not VK_NULL_HANDLE, it must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)+!(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06523",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-06211",
"text": " surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
"text": " If surface
is not VK_NULL_HANDLE, 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
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkGetPhysicalDeviceSurfaceFormats2KHR": {
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06521",
"text": " If the VK_GOOGLE_surfaceless_query
extension is not enabled, pSurfaceInfo->surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06522",
"text": " If pSurfaceInfo->surface
is not VK_NULL_HANDLE, it must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+!(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06520",
"text": " pSurfaceInfo->surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-06210",
"text": " pSurfaceInfo->surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(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)+(VK_EXT_image_compression_control)+!(VK_EXT_image_compression_control_swapchain)": [
{
"vuid": "VUID-VkSurfaceFormat2KHR-pNext-06749",
"text": " The pNext
chain must not include an VkImageCompressionPropertiesEXT structure"
}
],
"(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_image_compression_control)+(VK_EXT_image_compression_control_swapchain)": [
{
"vuid": "VUID-VkSurfaceFormat2KHR-pNext-06750",
"text": " If the imageCompressionControlSwapchain
feature is not enabled, the pNext
chain must not include an VkImageCompressionPropertiesEXT structure"
}
],
"(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
or a pointer to a valid instance of VkImageCompressionPropertiesEXT"
},
{
"vuid": "VUID-VkSurfaceFormat2KHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"vkGetPhysicalDeviceSurfacePresentModesKHR": {
"(VK_KHR_surface)+(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06524",
"text": " If the VK_GOOGLE_surfaceless_query
extension is not enabled, surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06525",
"text": " If surface
is not VK_NULL_HANDLE, it must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)+!(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06523",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-06211",
"text": " surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
"text": " If surface
is not VK_NULL_HANDLE, 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
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkGetPhysicalDeviceSurfacePresentModes2EXT": {
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)+(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06521",
"text": " If the VK_GOOGLE_surfaceless_query
extension is not enabled, pSurfaceInfo->surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06522",
"text": " If pSurfaceInfo->surface
is not VK_NULL_HANDLE, it must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)+!(VK_GOOGLE_surfaceless_query)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06520",
"text": " pSurfaceInfo->surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-06210",
"text": " pSurfaceInfo->surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
}
],
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter",
"text": " pPresentModeCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter",
"text": " If the value referenced by pPresentModeCount
is not 0
, and pPresentModes
is not NULL
, pPresentModes
must be a valid pointer to an array of pPresentModeCount
VkPresentModeKHR values"
}
]
},
"vkAcquireFullScreenExclusiveModeEXT": {
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675",
"text": " swapchain
must be a swapchain created with a VkSurfaceFullScreenExclusiveInfoEXT structure, with fullScreenExclusive
set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676",
"text": " swapchain
must not currently have exclusive full-screen access"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR handle"
},
{
"vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkReleaseFullScreenExclusiveModeEXT": {
"(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678",
"text": " swapchain
must be a swapchain created with a VkSurfaceFullScreenExclusiveInfoEXT structure, with fullScreenExclusive
set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
"
}
]
},
"vkGetDeviceGroupPresentCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
"text": " pDeviceGroupPresentCapabilities
must be a valid pointer to a VkDeviceGroupPresentCapabilitiesKHR structure"
}
]
},
"VkDeviceGroupPresentCapabilitiesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR
"
},
{
"vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetDeviceGroupSurfacePresentModesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-06212",
"text": " surface
must be supported by all physical devices associated with device
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
"text": " pModes
must be a valid pointer to a VkDeviceGroupPresentModeFlagsKHR value"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
"text": " Both of device
, and surface
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkGetDeviceGroupSurfacePresentModes2EXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_full_screen_exclusive)": [
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-06213",
"text": " pSurfaceInfo->surface
must be supported by all physical devices associated with device
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter",
"text": " pSurfaceInfo
must be a valid pointer to a valid VkPhysicalDeviceSurfaceInfo2KHR structure"
},
{
"vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter",
"text": " pModes
must be a valid pointer to a VkDeviceGroupPresentModeFlagsKHR value"
}
]
},
"vkGetPhysicalDevicePresentRectanglesKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06523",
"text": " surface
must be a valid VkSurfaceKHR handle"
},
{
"vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06211",
"text": " surface
must be supported by physicalDevice
, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism"
},
{
"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-01272",
"text": " minImageCount
must be less than or equal to the value returned in the maxImageCount
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface if the returned maxImageCount
is not zero"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
"text": " imageFormat
and imageColorSpace
must match the format
and colorSpace
members, respectively, of one of the VkSurfaceFormatKHR
structures returned by vkGetPhysicalDeviceSurfaceFormatsKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
"text": " imageExtent
must be between minImageExtent
and maxImageExtent
, inclusive, where minImageExtent
and maxImageExtent
are members of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
"text": " imageExtent
members width
and height
must both be non-zero"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
"text": " imageArrayLayers
must be greater than 0
and less than or equal to the maxImageArrayLayers
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, queueFamilyIndexCount
must be greater than 1
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
"text": " preTransform
must be one of the bits present in the supportedTransforms
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
"text": " compositeAlpha
must be one of the bits present in the supportedCompositeAlpha
member of the VkSurfaceCapabilitiesKHR
structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
"text": " presentMode
must be one of the VkPresentModeKHR values returned by vkGetPhysicalDeviceSurfacePresentModesKHR
for the surface"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
"text": " If oldSwapchain
is not VK_NULL_HANDLE, oldSwapchain
must be a non-retired swapchain associated with native window referred to by surface
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
"text": " The implied image creation parameters of the swapchain must be supported as reported by vkGetPhysicalDeviceImageFormatProperties"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupSwapchainCreateInfoKHR, VkImageCompressionControlEXT, VkImageFormatListCreateInfo, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, VkSwapchainDisplayNativeHdrCreateInfoAMD, or VkSwapchainPresentBarrierCreateInfoNV"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
"text": " The sType
value of each struct 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 of non-ignored parameters 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-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-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_KHR_shared_presentable_image)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-02839",
"text": " If presentMode
is not VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
nor VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
, then 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-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_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties for the physicalDevice
that was used to create device
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
"text": " If imageSharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than pQueueFamilyPropertyCount
returned by either vkGetPhysicalDeviceQueueFamilyProperties or vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
"text": " If the logical device was created with VkDeviceGroupDeviceCreateInfo::physicalDeviceCount
equal to 1, flags
must not contain VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
"text": " If flags
contains VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
then the pNext
chain must include a VkImageFormatListCreateInfo structure with a viewFormatCount
greater than zero and pViewFormats
must have an element equal to imageFormat
"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-04099",
"text": " If a VkImageFormatListCreateInfo structure was included in the pNext
chain and VkImageFormatListCreateInfo::viewFormatCount
is not zero then all of the formats in VkImageFormatListCreateInfo::pViewFormats
must be compatible with the format
as described in the compatibility table"
},
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-flags-04100",
"text": " If flags
does not contain VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR
and the pNext
chain include a VkImageFormatListCreateInfo structure then VkImageFormatListCreateInfo::viewFormatCount
must be 0
or 1
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_surface_protected_capabilities)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187",
"text": " If flags
contains VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR
, then VkSurfaceProtectedCapabilitiesKHR
::supportsProtected
must be VK_TRUE
in the VkSurfaceProtectedCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilities2KHR for surface
"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679",
"text": " If the pNext
chain includes a VkSurfaceFullScreenExclusiveInfoEXT structure with its fullScreenExclusive
member set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
, and surface
was created using vkCreateWin32SurfaceKHR, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the pNext
chain"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_image_compression_control)+!(VK_EXT_image_compression_control_swapchain)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-06751",
"text": " The pNext
chain must not include an VkImageCompressionControlEXT structure"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_image_compression_control)+(VK_EXT_image_compression_control_swapchain)": [
{
"vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-06752",
"text": " If the imageCompressionControlSwapchain
feature is not enabled, the pNext
chain must not include an VkImageCompressionControlEXT structure"
}
]
},
"VkDeviceGroupSwapchainCreateInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
"text": " modes
must be a valid combination of VkDeviceGroupPresentModeFlagBitsKHR values"
},
{
"vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
"text": " modes
must not be 0
"
}
]
},
"VkSwapchainDisplayNativeHdrCreateInfoAMD": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
{
"vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD
"
},
{
"vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449",
"text": " It is only valid to set localDimmingEnable
to VK_TRUE
if VkDisplayNativeHdrSurfaceCapabilitiesAMD::localDimmingSupport
is supported"
}
]
},
"vkSetLocalDimmingAMD": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [
{
"vuid": "VUID-vkSetLocalDimmingAMD-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter",
"text": " swapChain
must be a valid VkSwapchainKHR handle"
},
{
"vuid": "VUID-vkSetLocalDimmingAMD-commonparent",
"text": " Both of device
, and swapChain
must have been created, allocated, or retrieved from the same VkInstance"
},
{
"vuid": "VUID-vkSetLocalDimmingAMD-localDimmingSupport-04618",
"text": " VkDisplayNativeHdrSurfaceCapabilitiesAMD::localDimmingSupport
must be supported"
}
]
},
"VkSwapchainCounterCreateInfoEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
{
"vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
"text": " The bits in surfaceCounters
must be supported by VkSwapchainCreateInfoKHR::surface
, as reported by vkGetPhysicalDeviceSurfaceCapabilities2EXT"
},
{
"vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
"text": " surfaceCounters
must be a valid combination of VkSurfaceCounterFlagBitsEXT values"
}
]
},
"vkGetSwapchainCounterEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
{
"vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
"text": " One or more present commands on swapchain
must have been processed by the presentation engine"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR handle"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
"text": " counter
must be a valid VkSurfaceCounterFlagBitsEXT value"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
"text": " pCounterValue
must be a valid pointer to a uint64_t
value"
},
{
"vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"vkDestroySwapchainKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
"text": " All uses of presentable images acquired from swapchain
must have completed execution"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
"text": " If VkAllocationCallbacks
were provided when swapchain
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
"text": " If no VkAllocationCallbacks
were provided when swapchain
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
"text": " If swapchain
is not VK_NULL_HANDLE, swapchain
must be a valid VkSwapchainKHR handle"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroySwapchainKHR-commonparent",
"text": " Both of device
, and swapchain
that are valid handles of non-ignored parameters 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 of non-ignored parameters must have been created, allocated, or retrieved from the same VkInstance"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkAcquireNextImageKHR-semaphore-03265",
"text": " semaphore
must have a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
"
}
]
},
"vkAcquireNextImage2KHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
"text": " If the number of currently acquired images is greater than the difference between the number of images in the swapchain
member of pAcquireInfo
and the value of VkSurfaceCapabilitiesKHR::minImageCount
as returned by a call to vkGetPhysicalDeviceSurfaceCapabilities2KHR with the surface
used to create swapchain
, the timeout
member of pAcquireInfo
must not be UINT64_MAX
"
},
{
"vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
"text": " pAcquireInfo
must be a valid pointer to a valid VkAcquireNextImageInfoKHR structure"
},
{
"vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
"text": " pImageIndex
must be a valid pointer to a uint32_t
value"
}
]
},
"VkAcquireNextImageInfoKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
"text": " If semaphore
is not VK_NULL_HANDLE it must be unsignaled"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
"text": " If semaphore
is not VK_NULL_HANDLE it must not have any uncompleted signal or wait operations pending"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
"text": " If fence
is not VK_NULL_HANDLE it must be unsignaled and must not be associated with any other queue command that has not yet completed execution on that queue"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
"text": " semaphore
and fence
must not both be equal to VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
"text": " deviceMask
must be a valid device mask"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
"text": " deviceMask
must not be zero"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR
"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR handle"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
"text": " If semaphore
is not VK_NULL_HANDLE, semaphore
must be a valid VkSemaphore handle"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
"text": " If fence
is not VK_NULL_HANDLE, fence
must be a valid VkFence handle"
},
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
"text": " Each of fence
, semaphore
, and swapchain
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkInstance"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-03266",
"text": " semaphore
must have a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
"
}
]
},
"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 wait operation referring to a binary semaphore defined by the elements of the pWaitSemaphores
member of pPresentInfo
executes on queue
, there must be no other queues waiting on the same semaphore"
},
{
"vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
"text": " All elements of the pWaitSemaphores
member of pPresentInfo
must be semaphores that are signaled, or have semaphore signal operations previously submitted for execution"
},
{
"vuid": "VUID-vkQueuePresentKHR-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
"text": " pPresentInfo
must be a valid pointer to a valid VkPresentInfoKHR structure"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
{
"vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
"text": " If more than one member of pSwapchains
was created from a display surface, all display surfaces referenced that refer to the same display must use the same display mode"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03267",
"text": " All elements of the pWaitSemaphores
member of pPresentInfo
must be created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY
"
},
{
"vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03268",
"text": " All elements of the pWaitSemaphores
member of pPresentInfo
must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) must have also been submitted for execution"
}
]
},
"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)+(VK_KHR_present_id)": [
{
"vuid": "VUID-VkPresentInfoKHR-pNext-06235",
"text": " If a VkPresentIdKHR structure is included in the pNext
chain, and the presentId
feature is not enabled, each presentIds
entry in that structure must be NULL"
}
],
"(VK_KHR_surface)+(VK_KHR_swapchain)": [
{
"vuid": "VUID-VkPresentInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_INFO_KHR
"
},
{
"vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkDeviceGroupPresentInfoKHR, VkDisplayPresentInfoKHR, VkPresentFrameTokenGGP, VkPresentIdKHR, VkPresentRegionsKHR, or VkPresentTimesInfoGOOGLE"
},
{
"vuid": "VUID-VkPresentInfoKHR-sType-unique",
"text": " The sType
value of each struct 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 of non-ignored parameters 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 included in the pNext
chain of this VkPresentRegionsKHR
structure"
},
{
"vuid": "VUID-VkPresentRegionsKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR
"
},
{
"vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
"text": " If pRegions
is not NULL
, pRegions
must be a valid pointer to an array of swapchainCount
valid VkPresentRegionKHR structures"
},
{
"vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
}
]
},
"VkPresentRegionKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
{
"vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
"text": " If rectangleCount
is not 0
, and pRectangles
is not NULL
, pRectangles
must be a valid pointer to an array of rectangleCount
valid VkRectLayerKHR structures"
}
]
},
"VkRectLayerKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
{
"vuid": "VUID-VkRectLayerKHR-offset-04864",
"text": " The sum of offset
and extent
, after being transformed according to the preTransform
member of the VkSwapchainCreateInfoKHR structure, must be no greater than the imageExtent
member of the VkSwapchainCreateInfoKHR structure passed to vkCreateSwapchainKHR"
},
{
"vuid": "VUID-VkRectLayerKHR-layer-01262",
"text": " layer
must be less than the imageArrayLayers
member of the VkSwapchainCreateInfoKHR structure passed 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 is VK_FALSE
, 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 included 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
"
}
]
},
"VkPresentIdKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_present_id)": [
{
"vuid": "VUID-VkPresentIdKHR-swapchainCount-04998",
"text": " swapchainCount
must be the same value as VkPresentInfoKHR
::swapchainCount
, where this VkPresentIdKHR
is in the pNext
chain of the VkPresentInfoKHR
structure"
},
{
"vuid": "VUID-VkPresentIdKHR-presentIds-04999",
"text": " Each presentIds
entry must be greater than any previous presentIds
entry passed for the associated pSwapchains
entry"
},
{
"vuid": "VUID-VkPresentIdKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_ID_KHR
"
},
{
"vuid": "VUID-VkPresentIdKHR-pPresentIds-parameter",
"text": " If pPresentIds
is not NULL
, pPresentIds
must be a valid pointer to an array of swapchainCount
uint64_t
values"
},
{
"vuid": "VUID-VkPresentIdKHR-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
}
]
},
"vkWaitForPresentKHR": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_present_id)+(VK_KHR_present_wait)": [
{
"vuid": "VUID-vkWaitForPresentKHR-swapchain-04997",
"text": " swapchain
must not be in the retired state"
},
{
"vuid": "VUID-vkWaitForPresentKHR-presentWait-06234",
"text": " The presentWait
feature must be enabled"
},
{
"vuid": "VUID-vkWaitForPresentKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkWaitForPresentKHR-swapchain-parameter",
"text": " swapchain
must be a valid VkSwapchainKHR handle"
},
{
"vuid": "VUID-vkWaitForPresentKHR-commonparent",
"text": " Both of device
, and swapchain
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"VkPresentFrameTokenGGP": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GGP_frame_token)": [
{
"vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680",
"text": " frameToken
must be a valid GgpFrameToken
"
},
{
"vuid": "VUID-VkPresentFrameTokenGGP-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP
"
}
]
},
"vkSetHdrMetadataEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
{
"vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
"text": " pSwapchains
must be a valid pointer to an array of swapchainCount
valid VkSwapchainKHR handles"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
"text": " pMetadata
must be a valid pointer to an array of swapchainCount
valid VkHdrMetadataEXT structures"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
"text": " swapchainCount
must be greater than 0
"
},
{
"vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
"text": " Both of device
, and the elements of pSwapchains
must have been created, allocated, or retrieved from the same VkInstance"
}
]
},
"VkHdrMetadataEXT": {
"(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
{
"vuid": "VUID-VkHdrMetadataEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_HDR_METADATA_EXT
"
},
{
"vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkSwapchainPresentBarrierCreateInfoNV": {
"(VK_KHR_surface)+(VK_NV_present_barrier)": [
{
"vuid": "VUID-VkSwapchainPresentBarrierCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV
"
}
]
},
"vkCreateDeferredOperationKHR": {
"(VK_KHR_deferred_host_operations)": [
{
"vuid": "VUID-vkCreateDeferredOperationKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateDeferredOperationKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter",
"text": " pDeferredOperation
must be a valid pointer to a VkDeferredOperationKHR handle"
}
]
},
"vkDeferredOperationJoinKHR": {
"(VK_KHR_deferred_host_operations)": [
{
"vuid": "VUID-vkDeferredOperationJoinKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDeferredOperationJoinKHR-operation-parameter",
"text": " operation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkDeferredOperationJoinKHR-operation-parent",
"text": " operation
must have been created, allocated, or retrieved from device
"
}
]
},
"vkDestroyDeferredOperationKHR": {
"(VK_KHR_deferred_host_operations)": [
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03434",
"text": " If VkAllocationCallbacks
were provided when operation
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03435",
"text": " If no VkAllocationCallbacks
were provided when operation
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03436",
"text": " operation
must be completed"
},
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parameter",
"text": " If operation
is not VK_NULL_HANDLE, operation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parent",
"text": " If operation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetDeferredOperationMaxConcurrencyKHR": {
"(VK_KHR_deferred_host_operations)": [
{
"vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter",
"text": " operation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent",
"text": " operation
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetDeferredOperationResultKHR": {
"(VK_KHR_deferred_host_operations)": [
{
"vuid": "VUID-vkGetDeferredOperationResultKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parameter",
"text": " operation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parent",
"text": " operation
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreatePrivateDataSlot": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-vkCreatePrivateDataSlot-privateData-04564",
"text": " The privateData
feature must be enabled"
},
{
"vuid": "VUID-vkCreatePrivateDataSlot-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreatePrivateDataSlot-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkPrivateDataSlotCreateInfo structure"
},
{
"vuid": "VUID-vkCreatePrivateDataSlot-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreatePrivateDataSlot-pPrivateDataSlot-parameter",
"text": " pPrivateDataSlot
must be a valid pointer to a VkPrivateDataSlot handle"
}
]
},
"VkPrivateDataSlotCreateInfo": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-VkPrivateDataSlotCreateInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO
"
},
{
"vuid": "VUID-VkPrivateDataSlotCreateInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPrivateDataSlotCreateInfo-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkDestroyPrivateDataSlot": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-04062",
"text": " If VkAllocationCallbacks
were provided when privateDataSlot
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-04063",
"text": " If no VkAllocationCallbacks
were provided when privateDataSlot
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyPrivateDataSlot-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-parameter",
"text": " If privateDataSlot
is not VK_NULL_HANDLE, privateDataSlot
must be a valid VkPrivateDataSlot handle"
},
{
"vuid": "VUID-vkDestroyPrivateDataSlot-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyPrivateDataSlot-privateDataSlot-parent",
"text": " If privateDataSlot
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkSetPrivateData": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-vkSetPrivateData-objectHandle-04016",
"text": " objectHandle
must be device
or a child of device
"
},
{
"vuid": "VUID-vkSetPrivateData-objectHandle-04017",
"text": " objectHandle
must be a valid handle to an object of type objectType
"
},
{
"vuid": "VUID-vkSetPrivateData-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetPrivateData-objectType-parameter",
"text": " objectType
must be a valid VkObjectType value"
},
{
"vuid": "VUID-vkSetPrivateData-privateDataSlot-parameter",
"text": " privateDataSlot
must be a valid VkPrivateDataSlot handle"
},
{
"vuid": "VUID-vkSetPrivateData-privateDataSlot-parent",
"text": " privateDataSlot
must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetPrivateData": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-vkGetPrivateData-objectType-04018",
"text": " objectType
must be VK_OBJECT_TYPE_DEVICE
, or an object type whose parent is VkDevice"
},
{
"vuid": "VUID-vkGetPrivateData-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetPrivateData-objectType-parameter",
"text": " objectType
must be a valid VkObjectType value"
},
{
"vuid": "VUID-vkGetPrivateData-privateDataSlot-parameter",
"text": " privateDataSlot
must be a valid VkPrivateDataSlot handle"
},
{
"vuid": "VUID-vkGetPrivateData-pData-parameter",
"text": " pData
must be a valid pointer to a uint64_t
value"
},
{
"vuid": "VUID-vkGetPrivateData-privateDataSlot-parent",
"text": " privateDataSlot
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdBuildAccelerationStructureNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
"text": " geometryCount
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxGeometryCount
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
"text": " dst
must have been created with compatible VkAccelerationStructureInfoNV where VkAccelerationStructureInfoNV::type
and VkAccelerationStructureInfoNV::flags
are identical, VkAccelerationStructureInfoNV::instanceCount
and VkAccelerationStructureInfoNV::geometryCount
for dst
are greater than or equal to the build size and each geometry in VkAccelerationStructureInfoNV::pGeometries
for dst
has greater than or equal to the number of vertices, indices, and AABBs"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
"text": " If update
is VK_TRUE
, src
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
"text": " If update
is VK_TRUE
, src
must have previously been constructed with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV
set in VkAccelerationStructureInfoNV::flags
in the original build"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
"text": " If update
is VK_FALSE
, the size
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with VkAccelerationStructureMemoryRequirementsInfoNV::accelerationStructure
set to dst
and VkAccelerationStructureMemoryRequirementsInfoNV::type
set to VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV
must be less than or equal to the size of scratch
minus scratchOffset
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
"text": " If update
is VK_TRUE
, the size
member of the VkMemoryRequirements structure returned from a call to vkGetAccelerationStructureMemoryRequirementsNV with VkAccelerationStructureMemoryRequirementsInfoNV::accelerationStructure
set to dst
and VkAccelerationStructureMemoryRequirementsInfoNV::type
set to VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV
must be less than or equal to the size of scratch
minus scratchOffset
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522",
"text": " scratch
must have been created with VK_BUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523",
"text": " If instanceData
is not VK_NULL_HANDLE, instanceData
must have been created with VK_BUFFER_USAGE_RAY_TRACING_BIT_NV
usage flag"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-accelerationStructureReference-03786",
"text": " Each VkAccelerationStructureInstanceKHR::accelerationStructureReference
value in instanceData
must be a valid device address containing a value obtained from vkGetAccelerationStructureHandleNV"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524",
"text": " If update
is VK_TRUE
, then objects that were previously active must not be made inactive as per Inactive Primitives and Instances"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525",
"text": " If update
is VK_TRUE
, then objects that were previously inactive must not be made active as per Inactive Primitives and Instances"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526",
"text": " If update
is VK_TRUE
, the src
and dst
objects must either be the same object or not have any memory aliasing"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkAccelerationStructureInfoNV structure"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
"text": " If instanceData
is not VK_NULL_HANDLE, instanceData
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
"text": " dst
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
"text": " If src
is not VK_NULL_HANDLE, src
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
"text": " scratch
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
"text": " Each of commandBuffer
, dst
, instanceData
, scratch
, and src
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdBuildAccelerationStructuresKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-mode-04628",
"text": " The mode
member of each element of pInfos
must be a valid VkBuildAccelerationStructureModeKHR value"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
"text": " If the srcAccelerationStructure
member of any element of pInfos
is not VK_NULL_HANDLE, the srcAccelerationStructure
member must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-04630",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
member must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03403",
"text": " The srcAccelerationStructure
member of any element of pInfos
must not be the same acceleration structure as the dstAccelerationStructure
member of any other element of pInfos
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
"text": " The dstAccelerationStructure
member of any element of pInfos
must not be the same acceleration structure as the dstAccelerationStructure
member of any other element of pInfos
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
"text": " The dstAccelerationStructure
member of any element of pInfos
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03699",
"text": " For each element of pInfos
, if its type
member is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
, its dstAccelerationStructure
member must have been created with a value of VkAccelerationStructureCreateInfoKHR::type
equal to either VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03700",
"text": " For each element of pInfos
, if its type
member is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
, its dstAccelerationStructure
member must have been created with a value of VkAccelerationStructureCreateInfoKHR::type
equal to either VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03663",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, inactive primitives in its srcAccelerationStructure
member must not be made active"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03664",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, active primitives in its srcAccelerationStructure
member must not be made inactive"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-None-03407",
"text": " The dstAccelerationStructure
member of any element of pInfos
must not be referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
in any other element of pInfos
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the srcAccelerationStructure
member of any other element of pInfos
with a mode
equal to VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the dstAccelerationStructure
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any element of pInfos
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03704",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-scratchData-03705",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the srcAccelerationStructure
member of any element of pInfos
with a mode
equal to VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing any acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
in any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03667",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
member must have previously been constructed with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
set in VkAccelerationStructureBuildGeometryInfoKHR::flags
in the build"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03668",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
and dstAccelerationStructure
members must either be the same VkAccelerationStructureKHR, or not have any memory aliasing"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03758",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its geometryCount
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03759",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its flags
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03760",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its type
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03761",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, its geometryType
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03762",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, its flags
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03763",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.vertexFormat
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03764",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.maxVertex
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03765",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.indexType
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03766",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if its geometry.triangles.transformData
address was NULL
when srcAccelerationStructure
was last built, then it must be NULL
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03767",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if its geometry.triangles.transformData
address was not NULL
when srcAccelerationStructure
was last built, then it must not be NULL
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03768",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, and geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, then the value of each index referenced must be the same as the corresponding index value when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-primitiveCount-03769",
"text": " For each VkAccelerationStructureBuildRangeInfoKHR
referenced by this command, its primitiveCount
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-firstVertex-03770",
"text": " For each VkAccelerationStructureBuildRangeInfoKHR
referenced by this command, if the corresponding geometry uses indices, its firstVertex
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03801",
"text": " For each element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, the corresponding pname:ppBuildRangeInfos[i][j].pname:primitiveCount must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxInstanceCount
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03707",
"text": " For each element of pInfos
, the buffer
used to create its dstAccelerationStructure
member must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03708",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
the buffer
used to create its srcAccelerationStructure
member must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03709",
"text": " For each element of pInfos
, the buffer
used to create each acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03671",
"text": " If pInfos
[i].mode
is VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
, all addresses between pInfos
[i].scratchData.deviceAddress
and pInfos
[i].scratchData.deviceAddress
+ N - 1 must be in the buffer device address range of the same buffer, where N is given by the buildScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure returned from a call to vkGetAccelerationStructureBuildSizesKHR with an identical VkAccelerationStructureBuildGeometryInfoKHR structure and primitive count"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03672",
"text": " If pInfos
[i].mode
is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, all addresses between pInfos
[i].scratchData.deviceAddress
and pInfos
[i].scratchData.deviceAddress
+ N - 1 must be in the buffer device address range of the same buffer, where N is given by the updateScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure returned from a call to vkGetAccelerationStructureBuildSizesKHR with an identical VkAccelerationStructureBuildGeometryInfoKHR structure and primitive count"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-geometry-03673",
"text": " The buffers from which the buffer device addresses for all of the geometry.triangles.vertexData
, geometry.triangles.indexData
, geometry.triangles.transformData
, geometry.aabbs.data
, and geometry.instances.data
members of all pInfos
[i].pGeometries
and pInfos
[i].ppGeometries
are queried must have been created with the VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03674",
"text": " The buffer from which the buffer device address pInfos
[i].scratchData.deviceAddress
is queried must have been created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03802",
"text": " For each element of pInfos
, its scratchData.deviceAddress
member must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03803",
"text": " For each element of pInfos
, if scratchData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03710",
"text": " For each element of pInfos
, its scratchData.deviceAddress
member must be a multiple of VkPhysicalDeviceAccelerationStructurePropertiesKHR::minAccelerationStructureScratchOffsetAlignment
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03804",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, geometry.triangles.vertexData.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03805",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.vertexData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03711",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, geometry.triangles.vertexData.deviceAddress
must be aligned to the size in bytes of the smallest component of the format in vertexFormat
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03806",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, geometry.triangles.indexData.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03807",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, if geometry.triangles.indexData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03712",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, and with geometry.triangles.indexType
not equal to VK_INDEX_TYPE_NONE_KHR
, geometry.triangles.indexData.deviceAddress
must be aligned to the size in bytes of the type in indexType
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03808",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.deviceAddress
is not 0
, it must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03809",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03810",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.deviceAddress
is not 0
, it must be aligned to 16
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03811",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, geometry.aabbs.data.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03812",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, if geometry.aabbs.data.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03714",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, geometry.aabbs.data.deviceAddress
must be aligned to 8
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03715",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.arrayOfPointers
is VK_FALSE
, geometry.instances.data.deviceAddress
must be aligned to 16
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03716",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.arrayOfPointers
is VK_TRUE
, geometry.instances.data.deviceAddress
must be aligned to 8
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03717",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.arrayOfPointers
is VK_TRUE
, each element of geometry.instances.data.deviceAddress
in device memory must be aligned to 16
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03813",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, geometry.instances.data.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03814",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.instances.data.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-06707",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, each VkAccelerationStructureInstanceKHR::accelerationStructureReference
value in geometry.instances.data.deviceAddress
must be a valid device address containing a value obtained from vkGetAccelerationStructureDeviceAddressKHR or 0
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-03675",
"text": " For each pInfos
[i], dstAccelerationStructure
must have been created with a value of VkAccelerationStructureCreateInfoKHR::size
greater than or equal to the memory size required by the build operation, as returned by vkGetAccelerationStructureBuildSizesKHR with pBuildInfo
= pInfos
[i] and with each element of the pMaxPrimitiveCounts
array greater than or equal to the equivalent ppBuildRangeInfos
[i][j].primitiveCount
values for j
in [0,pInfos
[i].geometryCount
)"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
"text": " Each element of ppBuildRangeInfos
[i] must be a valid pointer to an array of pInfos
[i].geometryCount
VkAccelerationStructureBuildRangeInfoKHR
structures"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-pInfos-parameter",
"text": " pInfos
must be a valid pointer to an array of infoCount
valid VkAccelerationStructureBuildGeometryInfoKHR structures"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
"text": " ppBuildRangeInfos
must be a valid pointer to an array of infoCount
VkAccelerationStructureBuildRangeInfoKHR structures"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresKHR-infoCount-arraylength",
"text": " infoCount
must be greater than 0
"
}
]
},
"vkCmdBuildAccelerationStructuresIndirectKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-mode-04628",
"text": " The mode
member of each element of pInfos
must be a valid VkBuildAccelerationStructureModeKHR value"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-srcAccelerationStructure-04629",
"text": " If the srcAccelerationStructure
member of any element of pInfos
is not VK_NULL_HANDLE, the srcAccelerationStructure
member must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-04630",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
member must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03403",
"text": " The srcAccelerationStructure
member of any element of pInfos
must not be the same acceleration structure as the dstAccelerationStructure
member of any other element of pInfos
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03698",
"text": " The dstAccelerationStructure
member of any element of pInfos
must not be the same acceleration structure as the dstAccelerationStructure
member of any other element of pInfos
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03800",
"text": " The dstAccelerationStructure
member of any element of pInfos
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03699",
"text": " For each element of pInfos
, if its type
member is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
, its dstAccelerationStructure
member must have been created with a value of VkAccelerationStructureCreateInfoKHR::type
equal to either VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03700",
"text": " For each element of pInfos
, if its type
member is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
, its dstAccelerationStructure
member must have been created with a value of VkAccelerationStructureCreateInfoKHR::type
equal to either VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03663",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, inactive primitives in its srcAccelerationStructure
member must not be made active"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03664",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, active primitives in its srcAccelerationStructure
member must not be made inactive"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-None-03407",
"text": " The dstAccelerationStructure
member of any element of pInfos
must not be referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
in any other element of pInfos
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03701",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the srcAccelerationStructure
member of any other element of pInfos
with a mode
equal to VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03702",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the dstAccelerationStructure
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03703",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any element of pInfos
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03704",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-scratchData-03705",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the srcAccelerationStructure
member of any element of pInfos
with a mode
equal to VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-dstAccelerationStructure-03706",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing any acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
in any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03667",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
member must have previously been constructed with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
set in VkAccelerationStructureBuildGeometryInfoKHR::flags
in the build"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03668",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
and dstAccelerationStructure
members must either be the same VkAccelerationStructureKHR, or not have any memory aliasing"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03758",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its geometryCount
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03759",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its flags
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03760",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its type
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03761",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, its geometryType
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03762",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, its flags
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03763",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.vertexFormat
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03764",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.maxVertex
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03765",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.indexType
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03766",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if its geometry.triangles.transformData
address was NULL
when srcAccelerationStructure
was last built, then it must be NULL
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03767",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if its geometry.triangles.transformData
address was not NULL
when srcAccelerationStructure
was last built, then it must not be NULL
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03768",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, and geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, then the value of each index referenced must be the same as the corresponding index value when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-primitiveCount-03769",
"text": " For each VkAccelerationStructureBuildRangeInfoKHR
referenced by this command, its primitiveCount
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-firstVertex-03770",
"text": " For each VkAccelerationStructureBuildRangeInfoKHR
referenced by this command, if the corresponding geometry uses indices, its firstVertex
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03801",
"text": " For each element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, the corresponding pname:ppMaxPrimitiveCounts[i][j] must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxInstanceCount
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03707",
"text": " For each element of pInfos
, the buffer
used to create its dstAccelerationStructure
member must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03708",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
the buffer
used to create its srcAccelerationStructure
member must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03709",
"text": " For each element of pInfos
, the buffer
used to create each acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03671",
"text": " If pInfos
[i].mode
is VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
, all addresses between pInfos
[i].scratchData.deviceAddress
and pInfos
[i].scratchData.deviceAddress
+ N - 1 must be in the buffer device address range of the same buffer, where N is given by the buildScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure returned from a call to vkGetAccelerationStructureBuildSizesKHR with an identical VkAccelerationStructureBuildGeometryInfoKHR structure and primitive count"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03672",
"text": " If pInfos
[i].mode
is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, all addresses between pInfos
[i].scratchData.deviceAddress
and pInfos
[i].scratchData.deviceAddress
+ N - 1 must be in the buffer device address range of the same buffer, where N is given by the updateScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure returned from a call to vkGetAccelerationStructureBuildSizesKHR with an identical VkAccelerationStructureBuildGeometryInfoKHR structure and primitive count"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-geometry-03673",
"text": " The buffers from which the buffer device addresses for all of the geometry.triangles.vertexData
, geometry.triangles.indexData
, geometry.triangles.transformData
, geometry.aabbs.data
, and geometry.instances.data
members of all pInfos
[i].pGeometries
and pInfos
[i].ppGeometries
are queried must have been created with the VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03674",
"text": " The buffer from which the buffer device address pInfos
[i].scratchData.deviceAddress
is queried must have been created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03802",
"text": " For each element of pInfos
, its scratchData.deviceAddress
member must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03803",
"text": " For each element of pInfos
, if scratchData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03710",
"text": " For each element of pInfos
, its scratchData.deviceAddress
member must be a multiple of VkPhysicalDeviceAccelerationStructurePropertiesKHR::minAccelerationStructureScratchOffsetAlignment
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03804",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, geometry.triangles.vertexData.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03805",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.vertexData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03711",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, geometry.triangles.vertexData.deviceAddress
must be aligned to the size in bytes of the smallest component of the format in vertexFormat
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03806",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, geometry.triangles.indexData.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03807",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, if geometry.triangles.indexData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03712",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, and with geometry.triangles.indexType
not equal to VK_INDEX_TYPE_NONE_KHR
, geometry.triangles.indexData.deviceAddress
must be aligned to the size in bytes of the type in indexType
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03808",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.deviceAddress
is not 0
, it must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03809",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03810",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.deviceAddress
is not 0
, it must be aligned to 16
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03811",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, geometry.aabbs.data.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03812",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, if geometry.aabbs.data.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03714",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, geometry.aabbs.data.deviceAddress
must be aligned to 8
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03715",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.arrayOfPointers
is VK_FALSE
, geometry.instances.data.deviceAddress
must be aligned to 16
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03716",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.arrayOfPointers
is VK_TRUE
, geometry.instances.data.deviceAddress
must be aligned to 8
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03717",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.arrayOfPointers
is VK_TRUE
, each element of geometry.instances.data.deviceAddress
in device memory must be aligned to 16
bytes"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03813",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, geometry.instances.data.deviceAddress
must be a valid device address obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03814",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, if geometry.instances.data.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-06707",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, each VkAccelerationStructureInstanceKHR::accelerationStructureReference
value in geometry.instances.data.deviceAddress
must be a valid device address containing a value obtained from vkGetAccelerationStructureDeviceAddressKHR or 0
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03645",
"text": " For any element of pIndirectDeviceAddresses
, if the buffer from which it was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03646",
"text": " For any element of pIndirectDeviceAddresses
[i], all device addresses between pIndirectDeviceAddresses
[i] and pIndirectDeviceAddresses
[i] + (pInfos
[i].geometryCount
{times} pIndirectStrides
[i]) - 1 must be in the buffer device address range of the same buffer"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03647",
"text": " For any element of pIndirectDeviceAddresses
, the buffer from which it was queried must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03648",
"text": " Each element of pIndirectDeviceAddresses
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-03787",
"text": " Each element of pIndirectStrides
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-03649",
"text": " commandBuffer
must not be a protected command buffer"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-accelerationStructureIndirectBuild-03650",
"text": " The VkPhysicalDeviceAccelerationStructureFeaturesKHR
::accelerationStructureIndirectBuild
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-03651",
"text": " Each VkAccelerationStructureBuildRangeInfoKHR structure referenced by any element of pIndirectDeviceAddresses
must be a valid VkAccelerationStructureBuildRangeInfoKHR structure"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-03652",
"text": " pInfos
[i].dstAccelerationStructure
must have been created with a value of VkAccelerationStructureCreateInfoKHR::size
greater than or equal to the memory size required by the build operation, as returned by vkGetAccelerationStructureBuildSizesKHR with pBuildInfo
= pInfos
[i] and pMaxPrimitiveCounts
= ppMaxPrimitiveCounts
[i]"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-03653",
"text": " Each ppMaxPrimitiveCounts
[i][j] must be greater than or equal to the the primitiveCount
value specified by the VkAccelerationStructureBuildRangeInfoKHR structure located at pIndirectDeviceAddresses
[i] + (j
{times} pIndirectStrides
[i])"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pInfos-parameter",
"text": " pInfos
must be a valid pointer to an array of infoCount
valid VkAccelerationStructureBuildGeometryInfoKHR structures"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectDeviceAddresses-parameter",
"text": " pIndirectDeviceAddresses
must be a valid pointer to an array of infoCount
VkDeviceAddress
values"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-pIndirectStrides-parameter",
"text": " pIndirectStrides
must be a valid pointer to an array of infoCount
uint32_t
values"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-ppMaxPrimitiveCounts-parameter",
"text": " ppMaxPrimitiveCounts
must be a valid pointer to an array of infoCount
uint32_t
values"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBuildAccelerationStructuresIndirectKHR-infoCount-arraylength",
"text": " infoCount
must be greater than 0
"
}
]
},
"VkAccelerationStructureBuildGeometryInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03654",
"text": " type
must not be VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-03788",
"text": " Only one of pGeometries
or ppGeometries
can be a valid pointer, the other must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03789",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
, the geometryType
member of elements of either pGeometries
or ppGeometries
must be VK_GEOMETRY_TYPE_INSTANCES_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03790",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
, geometryCount
must be 1
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03791",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
the geometryType
member of elements of either pGeometries
or ppGeometries
must not be VK_GEOMETRY_TYPE_INSTANCES_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03792",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
then the geometryType
member of each geometry in either pGeometries
or ppGeometries
must be the same"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03793",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
then geometryCount
must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxGeometryCount
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03794",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
and the geometryType
member of either pGeometries
or ppGeometries
is VK_GEOMETRY_TYPE_AABBS_KHR
, the total number of AABBs in all geometries must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPrimitiveCount
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-03795",
"text": " If type
is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
and the geometryType
member of either pGeometries
or ppGeometries
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, the total number of triangles in all geometries must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxPrimitiveCount
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-03796",
"text": " If flags
has the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR
bit set, then it must not have the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR
bit set"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter",
"text": " type
must be a valid VkAccelerationStructureTypeKHR value"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkBuildAccelerationStructureFlagBitsKHR values"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pGeometries-parameter",
"text": " If geometryCount
is not 0
, and pGeometries
is not NULL
, pGeometries
must be a valid pointer to an array of geometryCount
valid VkAccelerationStructureGeometryKHR structures"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-ppGeometries-parameter",
"text": " If geometryCount
is not 0
, and ppGeometries
is not NULL
, ppGeometries
must be a valid pointer to an array of geometryCount
valid pointers to valid VkAccelerationStructureGeometryKHR structures"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent",
"text": " Both of dstAccelerationStructure
, and srcAccelerationStructure
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-04927",
"text": " If dstAccelerationStructure
was created with VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
set in VkAccelerationStructureCreateInfoKHR::flags
, VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
must be set in flags
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04928",
"text": " If VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
is set in flags
, dstAccelerationStructure
must have been created with VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV
set in VkAccelerationStructureCreateInfoKHR::flags
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-04929",
"text": " If VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
is set in flags
, type
must not be VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-07334",
"text": " If flags
has the VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT
bit set then it must not have the VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT
bit set."
}
]
},
"VkAccelerationStructureGeometryKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter",
"text": " geometryType
must be a valid VkGeometryTypeKHR value"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter",
"text": " If geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, the triangles
member of geometry
must be a valid VkAccelerationStructureGeometryTrianglesDataKHR structure"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter",
"text": " If geometryType
is VK_GEOMETRY_TYPE_AABBS_KHR
, the aabbs
member of geometry
must be a valid VkAccelerationStructureGeometryAabbsDataKHR structure"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter",
"text": " If geometryType
is VK_GEOMETRY_TYPE_INSTANCES_KHR
, the instances
member of geometry
must be a valid VkAccelerationStructureGeometryInstancesDataKHR structure"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter",
"text": " flags
must be a valid combination of VkGeometryFlagBitsKHR values"
}
]
},
"VkAccelerationStructureGeometryTrianglesDataKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03735",
"text": " vertexStride
must be a multiple of the size in bytes of the smallest component of vertexFormat
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexStride-03819",
"text": " vertexStride
must be less than or equal to 232-1"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-03797",
"text": " vertexFormat
must support the VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR
in VkFormatProperties::bufferFeatures
as returned by vkGetPhysicalDeviceFormatProperties2"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-03798",
"text": " indexType
must be VK_INDEX_TYPE_UINT16
, VK_INDEX_TYPE_UINT32
, or VK_INDEX_TYPE_NONE_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-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 VkAccelerationStructureGeometryMotionTrianglesDataNV or VkAccelerationStructureTrianglesOpacityMicromapEXT"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter",
"text": " vertexFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
}
]
},
"VkAccelerationStructureGeometryMotionTrianglesDataNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureGeometryMotionTrianglesDataNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV
"
}
]
},
"VkAccelerationStructureTrianglesOpacityMicromapEXT": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)+(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-07335",
"text": " Only one of pUsageCounts
or ppUsageCounts
can be a valid pointer, the other must be NULL
."
},
{
"vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT
"
},
{
"vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-indexType-parameter",
"text": " indexType
must be a valid VkIndexType value"
},
{
"vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-pUsageCounts-parameter",
"text": " If usageCountsCount
is not 0
, and pUsageCounts
is not NULL
, pUsageCounts
must be a valid pointer to an array of usageCountsCount
VkMicromapUsageEXT structures"
},
{
"vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-ppUsageCounts-parameter",
"text": " If usageCountsCount
is not 0
, and ppUsageCounts
is not NULL
, ppUsageCounts
must be a valid pointer to an array of usageCountsCount
valid pointers to VkMicromapUsageEXT structures"
},
{
"vuid": "VUID-VkAccelerationStructureTrianglesOpacityMicromapEXT-micromap-parameter",
"text": " micromap
must be a valid VkMicromapEXT handle"
}
]
},
"VkTransformMatrixKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkTransformMatrixKHR-matrix-03799",
"text": " The first three columns of matrix
must define an invertible 3x3 matrix"
}
]
},
"VkAccelerationStructureGeometryAabbsDataKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545",
"text": " stride
must be a multiple of 8
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03820",
"text": " stride
must be less than or equal to 232-1"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkAabbPositionsKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAabbPositionsKHR-minX-03546",
"text": " minX
must be less than or equal to maxX
"
},
{
"vuid": "VUID-VkAabbPositionsKHR-minY-03547",
"text": " minY
must be less than or equal to maxY
"
},
{
"vuid": "VUID-VkAabbPositionsKHR-minZ-03548",
"text": " minZ
must be less than or equal to maxZ
"
}
]
},
"VkAccelerationStructureGeometryInstancesDataKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkAccelerationStructureInstanceKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter",
"text": " flags
must be a valid combination of VkGeometryInstanceFlagBitsKHR values"
}
]
},
"VkAccelerationStructureMotionInstanceNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureMotionInstanceNV-type-parameter",
"text": " type
must be a valid VkAccelerationStructureMotionInstanceTypeNV value"
},
{
"vuid": "VUID-VkAccelerationStructureMotionInstanceNV-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkAccelerationStructureMotionInstanceNV-staticInstance-parameter",
"text": " If type
is VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV
, the staticInstance
member of data
must be a valid VkAccelerationStructureInstanceKHR structure"
},
{
"vuid": "VUID-VkAccelerationStructureMotionInstanceNV-matrixMotionInstance-parameter",
"text": " If type
is VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV
, the matrixMotionInstance
member of data
must be a valid VkAccelerationStructureMatrixMotionInstanceNV structure"
},
{
"vuid": "VUID-VkAccelerationStructureMotionInstanceNV-srtMotionInstance-parameter",
"text": " If type
is VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV
, the srtMotionInstance
member of data
must be a valid VkAccelerationStructureSRTMotionInstanceNV structure"
}
]
},
"VkAccelerationStructureMatrixMotionInstanceNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureMatrixMotionInstanceNV-flags-parameter",
"text": " flags
must be a valid combination of VkGeometryInstanceFlagBitsKHR values"
}
]
},
"VkAccelerationStructureSRTMotionInstanceNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkAccelerationStructureSRTMotionInstanceNV-flags-parameter",
"text": " flags
must be a valid combination of VkGeometryInstanceFlagBitsKHR values"
}
]
},
"VkAccelerationStructureBuildRangeInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03656",
"text": " For geometries of type VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if the geometry uses indices, the offset primitiveOffset
from VkAccelerationStructureGeometryTrianglesDataKHR::indexData
must be a multiple of the element size of VkAccelerationStructureGeometryTrianglesDataKHR::indexType
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03657",
"text": " For geometries of type VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if the geometry does not use indices, the offset primitiveOffset
from VkAccelerationStructureGeometryTrianglesDataKHR::vertexData
must be a multiple of the component size of VkAccelerationStructureGeometryTrianglesDataKHR::vertexFormat
"
},
{
"vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-transformOffset-03658",
"text": " For geometries of type VK_GEOMETRY_TYPE_TRIANGLES_KHR
, the offset transformOffset
from VkAccelerationStructureGeometryTrianglesDataKHR::transformData
must be a multiple of 16"
},
{
"vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03659",
"text": " For geometries of type VK_GEOMETRY_TYPE_AABBS_KHR
, the offset primitiveOffset
from VkAccelerationStructureGeometryAabbsDataKHR::data
must be a multiple of 8"
},
{
"vuid": "VUID-VkAccelerationStructureBuildRangeInfoKHR-primitiveOffset-03660",
"text": " For geometries of type VK_GEOMETRY_TYPE_INSTANCES_KHR
, the offset primitiveOffset
from VkAccelerationStructureGeometryInstancesDataKHR::data
must be a multiple of 16"
}
]
},
"vkCmdWriteAccelerationStructuresPropertiesKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493",
"text": " queryPool
must have been created with a queryType
matching queryType
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494",
"text": " The queries identified by queryPool
and firstQuery
must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-buffer-03736",
"text": " The buffer
used to create each acceleration structure in pAccelerationStructures
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-query-04880",
"text": " The sum of query
plus accelerationStructureCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964",
"text": " All acceleration structures in pAccelerationStructures
must have been built prior to the execution of this command"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
"text": " All acceleration structures in pAccelerationStructures
must have been built with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
if queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid VkAccelerationStructureKHR handles"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent",
"text": " Each of commandBuffer
, queryPool
, and the elements of pAccelerationStructures
must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-06742",
"text": " queryType
must be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+!(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432",
"text": " queryType
must be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
}
]
},
"vkCmdWriteAccelerationStructuresPropertiesNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03755",
"text": " queryPool
must have been created with a queryType
matching queryType
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-03756",
"text": " The queries identified by queryPool
and firstQuery
must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructure-03757",
"text": " accelerationStructure
must be bound completely and contiguously to a single VkDeviceMemory
object via vkBindAccelerationStructureMemoryNV"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-04958",
"text": " All acceleration structures in pAccelerationStructures
must have been built prior to the execution of this command"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-06215",
"text": " All acceleration structures in pAccelerationStructures
must have been built with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
if queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-06216",
"text": " queryType
must be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid VkAccelerationStructureNV handles"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
"text": " Each of commandBuffer
, queryPool
, and the elements of pAccelerationStructures
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdCopyAccelerationStructureNV": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410",
"text": " mode
must be VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
or VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-04963",
"text": " The source acceleration structure src
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411",
"text": " If mode
is VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
, src
must have been constructed with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
in the build"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03718",
"text": " The buffer
used to create src
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-buffer-03719",
"text": " The buffer
used to create dst
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
"text": " dst
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
"text": " src
must be a valid VkAccelerationStructureNV handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
"text": " mode
must be a valid VkCopyAccelerationStructureModeKHR value"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
"text": " Each of commandBuffer
, dst
, and src
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdCopyAccelerationStructureKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03737",
"text": " The buffer
used to create pInfo->src
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-buffer-03738",
"text": " The buffer
used to create pInfo->dst
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyAccelerationStructureInfoKHR structure"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyAccelerationStructureInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410",
"text": " mode
must be VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
or VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-04963",
"text": " The source acceleration structure src
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411",
"text": " If mode
is VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR
, src
must have been constructed with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
in the build"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03718",
"text": " The buffer
used to create src
must be bound to device memory"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-buffer-03719",
"text": " The buffer
used to create dst
must be bound to device memory"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter",
"text": " src
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter",
"text": " dst
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter",
"text": " mode
must be a valid VkCopyAccelerationStructureModeKHR value"
},
{
"vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent",
"text": " Both of dst
, and src
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdCopyAccelerationStructureToMemoryKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03739",
"text": " pInfo->dst.deviceAddress
must be a valid device address for a buffer bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03740",
"text": " pInfo->dst.deviceAddress
must be aligned to 256
bytes"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-03741",
"text": " If the buffer pointed to by pInfo->dst.deviceAddress
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559",
"text": " The buffer
used to create pInfo->src
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyAccelerationStructureToMemoryInfoKHR structure"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyAccelerationStructureToMemoryInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-04959",
"text": " The source acceleration structure src
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561",
"text": " The memory pointed to by dst
must be at least as large as the serialization size of src
, as reported by vkWriteAccelerationStructuresPropertiesKHR or vkCmdWriteAccelerationStructuresPropertiesKHR with a query type of VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412",
"text": " mode
must be VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter",
"text": " src
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter",
"text": " mode
must be a valid VkCopyAccelerationStructureModeKHR value"
}
]
},
"vkCmdCopyMemoryToAccelerationStructureKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03742",
"text": " pInfo->src.deviceAddress
must be a valid device address for a buffer bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03743",
"text": " pInfo->src.deviceAddress
must be aligned to 256
bytes"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03744",
"text": " If the buffer pointed to by pInfo->src.deviceAddress
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-buffer-03745",
"text": " The buffer
used to create pInfo->dst
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMemoryToAccelerationStructureInfoKHR structure"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyMemoryToAccelerationStructureInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-04960",
"text": " The source memory pointed to by src
must contain data previously serialized using vkCmdCopyAccelerationStructureToMemoryKHR, potentially modified to relocate acceleration structure references as described in that command"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413",
"text": " mode
must be VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR
"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414",
"text": " The data in src
must have a format compatible with the destination physical device as returned by vkGetDeviceAccelerationStructureCompatibilityKHR"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-03746",
"text": " dst
must have been created with a size
greater than or equal to that used to serialize the data in src
"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR
"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter",
"text": " dst
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter",
"text": " mode
must be a valid VkCopyAccelerationStructureModeKHR value"
}
]
},
"vkGetDeviceAccelerationStructureCompatibilityKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracingPipeline-03661",
"text": " The rayTracingPipeline
or rayQuery
feature must be enabled"
},
{
"vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pVersionInfo-parameter",
"text": " pVersionInfo
must be a valid pointer to a valid VkAccelerationStructureVersionInfoKHR structure"
},
{
"vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-pCompatibility-parameter",
"text": " pCompatibility
must be a valid pointer to a VkAccelerationStructureCompatibilityKHR value"
}
]
},
"VkAccelerationStructureVersionInfoKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkAccelerationStructureVersionInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR
"
},
{
"vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkAccelerationStructureVersionInfoKHR-pVersionData-parameter",
"text": " pVersionData
must be a valid pointer to an array of \\(2 \\times \\mathtt{VK\\_UUID\\_SIZE}\\) uint8_t
values"
}
]
},
"vkBuildAccelerationStructuresKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-mode-04628",
"text": " The mode
member of each element of pInfos
must be a valid VkBuildAccelerationStructureModeKHR value"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-srcAccelerationStructure-04629",
"text": " If the srcAccelerationStructure
member of any element of pInfos
is not VK_NULL_HANDLE, the srcAccelerationStructure
member must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-04630",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
member must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03403",
"text": " The srcAccelerationStructure
member of any element of pInfos
must not be the same acceleration structure as the dstAccelerationStructure
member of any other element of pInfos
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03698",
"text": " The dstAccelerationStructure
member of any element of pInfos
must not be the same acceleration structure as the dstAccelerationStructure
member of any other element of pInfos
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03800",
"text": " The dstAccelerationStructure
member of any element of pInfos
must be a valid VkAccelerationStructureKHR handle"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03699",
"text": " For each element of pInfos
, if its type
member is VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
, its dstAccelerationStructure
member must have been created with a value of VkAccelerationStructureCreateInfoKHR::type
equal to either VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03700",
"text": " For each element of pInfos
, if its type
member is VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
, its dstAccelerationStructure
member must have been created with a value of VkAccelerationStructureCreateInfoKHR::type
equal to either VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR
or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03663",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, inactive primitives in its srcAccelerationStructure
member must not be made active"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03664",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, active primitives in its srcAccelerationStructure
member must not be made inactive"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-None-03407",
"text": " The dstAccelerationStructure
member of any element of pInfos
must not be referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
in any other element of pInfos
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03701",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the srcAccelerationStructure
member of any other element of pInfos
with a mode
equal to VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, which is accessed by this command"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03702",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the dstAccelerationStructure
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03703",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any element of pInfos
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03704",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-scratchData-03705",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the srcAccelerationStructure
member of any element of pInfos
with a mode
equal to VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-dstAccelerationStructure-03706",
"text": " The range of memory backing the dstAccelerationStructure
member of any element of pInfos
that is accessed by this command must not overlap the memory backing any acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
in any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03667",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
member must have previously been constructed with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR
set in VkAccelerationStructureBuildGeometryInfoKHR::flags
in the build"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03668",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its srcAccelerationStructure
and dstAccelerationStructure
members must either be the same VkAccelerationStructureKHR, or not have any memory aliasing"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03758",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its geometryCount
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03759",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its flags
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03760",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, its type
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03761",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, its geometryType
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03762",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, its flags
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03763",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.vertexFormat
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03764",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.maxVertex
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03765",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, its geometry.triangles.indexType
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03766",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if its geometry.triangles.transformData
address was NULL
when srcAccelerationStructure
was last built, then it must be NULL
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03767",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if its geometry.triangles.transformData
address was not NULL
when srcAccelerationStructure
was last built, then it must not be NULL
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03768",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, then for each VkAccelerationStructureGeometryKHR
structure referred to by its pGeometries
or ppGeometries
members, if geometryType
is VK_GEOMETRY_TYPE_TRIANGLES_KHR
, and geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, then the value of each index referenced must be the same as the corresponding index value when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-primitiveCount-03769",
"text": " For each VkAccelerationStructureBuildRangeInfoKHR
referenced by this command, its primitiveCount
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-firstVertex-03770",
"text": " For each VkAccelerationStructureBuildRangeInfoKHR
referenced by this command, if the corresponding geometry uses indices, its firstVertex
member must have the same value which was specified when srcAccelerationStructure
was last built"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03801",
"text": " For each element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, the corresponding pname:ppBuildRangeInfos[i][j].pname:primitiveCount must be less than or equal to VkPhysicalDeviceAccelerationStructurePropertiesKHR::maxInstanceCount
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03675",
"text": " For each pInfos
[i], dstAccelerationStructure
must have been created with a value of VkAccelerationStructureCreateInfoKHR::size
greater than or equal to the memory size required by the build operation, as returned by vkGetAccelerationStructureBuildSizesKHR with pBuildInfo
= pInfos
[i] and with each element of the pMaxPrimitiveCounts
array greater than or equal to the equivalent ppBuildRangeInfos
[i][j].primitiveCount
values for j
in [0,pInfos
[i].geometryCount
)"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-03676",
"text": " Each element of ppBuildRangeInfos
[i] must be a valid pointer to an array of pInfos
[i].geometryCount
VkAccelerationStructureBuildRangeInfoKHR
structures"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03722",
"text": " For each element of pInfos
, the buffer
used to create its dstAccelerationStructure
member must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03723",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
the buffer
used to create its srcAccelerationStructure
member must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03724",
"text": " For each element of pInfos
, the buffer
used to create each acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-accelerationStructureHostCommands-03581",
"text": " The VkPhysicalDeviceAccelerationStructureFeaturesKHR
::accelerationStructureHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03725",
"text": " If pInfos
[i].mode
is VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR
, all addresses between pInfos
[i].scratchData.hostAddress
and pInfos
[i].scratchData.hostAddress
+ N - 1 must be valid host memory, where N is given by the buildScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure returned from a call to vkGetAccelerationStructureBuildSizesKHR with an identical VkAccelerationStructureBuildGeometryInfoKHR structure and primitive count"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03726",
"text": " If pInfos
[i].mode
is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
, all addresses between pInfos
[i].scratchData.hostAddress
and pInfos
[i].scratchData.hostAddress
+ N - 1 must be valid host memory, where N is given by the updateScratchSize
member of the VkAccelerationStructureBuildSizesInfoKHR structure returned from a call to vkGetAccelerationStructureBuildSizesKHR with an identical VkAccelerationStructureBuildGeometryInfoKHR structure and primitive count"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03771",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, geometry.triangles.vertexData.hostAddress
must be a valid host address"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03772",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.indexType
is not VK_INDEX_TYPE_NONE_KHR
, geometry.triangles.indexData.hostAddress
must be a valid host address"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03773",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
, if geometry.triangles.transformData.hostAddress
is not 0
, it must be a valid host address"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03774",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
, geometry.aabbs.data.hostAddress
must be a valid host address"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03778",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, geometry.instances.data.hostAddress
must be a valid host address"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03779",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
, each VkAccelerationStructureInstanceKHR::accelerationStructureReference
value in geometry.instances.data.hostAddress
must be a valid VkAccelerationStructureKHR object"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-parameter",
"text": " pInfos
must be a valid pointer to an array of infoCount
valid VkAccelerationStructureBuildGeometryInfoKHR structures"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-ppBuildRangeInfos-parameter",
"text": " ppBuildRangeInfos
must be a valid pointer to an array of infoCount
VkAccelerationStructureBuildRangeInfoKHR structures"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-infoCount-arraylength",
"text": " infoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03775",
"text": " For each element of pInfos
, the buffer
used to create its dstAccelerationStructure
member must be bound to memory that was not allocated with multiple instances"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03776",
"text": " For each element of pInfos
, if its mode
member is VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR
the buffer
used to create its srcAccelerationStructure
member must be bound to memory that was not allocated with multiple instances"
},
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-03777",
"text": " For each element of pInfos
, the buffer
used to create each acceleration structure referenced by the geometry.instances.data
member of any element of pGeometries
or ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
must be bound to memory that was not allocated with multiple instances"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-vkBuildAccelerationStructuresKHR-pInfos-04930",
"text": " For any element of pInfos
[i].pGeometries
or pInfos
[i].ppGeometries
with a geometryType
of VK_GEOMETRY_TYPE_INSTANCES_KHR
with VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
set, each accelerationStructureReference
in any structure in VkAccelerationStructureMotionInstanceNV value in geometry.instances.data.hostAddress
must be a valid VkAccelerationStructureKHR object"
}
]
},
"vkCopyAccelerationStructureKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03727",
"text": " The buffer
used to create pInfo->src
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03728",
"text": " The buffer
used to create pInfo->dst
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-accelerationStructureHostCommands-03582",
"text": " The VkPhysicalDeviceAccelerationStructureFeaturesKHR
::accelerationStructureHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyAccelerationStructureInfoKHR structure"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03780",
"text": " The buffer
used to create pInfo->src
must be bound to memory that was not allocated with multiple instances"
},
{
"vuid": "VUID-vkCopyAccelerationStructureKHR-buffer-03781",
"text": " The buffer
used to create pInfo->dst
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCopyMemoryToAccelerationStructureKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03729",
"text": " pInfo->src.hostAddress
must be a valid host pointer"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-03750",
"text": " pInfo->src.hostAddress
must be aligned to 16 bytes"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03730",
"text": " The buffer
used to create pInfo->dst
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-accelerationStructureHostCommands-03583",
"text": " The VkPhysicalDeviceAccelerationStructureFeaturesKHR
::accelerationStructureHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMemoryToAccelerationStructureInfoKHR structure"
},
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-buffer-03782",
"text": " The buffer
used to create pInfo->dst
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCopyAccelerationStructureToMemoryKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03731",
"text": " The buffer
used to create pInfo->src
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03732",
"text": " pInfo->dst.hostAddress
must be a valid host pointer"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-03751",
"text": " pInfo->dst.hostAddress
must be aligned to 16 bytes"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-accelerationStructureHostCommands-03584",
"text": " The VkPhysicalDeviceAccelerationStructureFeaturesKHR
::accelerationStructureHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyAccelerationStructureToMemoryInfoKHR structure"
},
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-buffer-03783",
"text": " The buffer
used to create pInfo->src
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkWriteAccelerationStructuresPropertiesKHR": {
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-04964",
"text": " All acceleration structures in pAccelerationStructures
must have been built prior to the execution of this command"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431",
"text": " All acceleration structures in pAccelerationStructures
must have been built with VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR
if queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
, then stride
must be a multiple of the size of VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
, then pData
must point to a VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
, then stride
must be a multiple of the size of VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
, then pData
must point to a VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452",
"text": " dataSize
must be greater than or equal to accelerationStructureCount
*stride
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03733",
"text": " The buffer
used to create each acceleration structure in pAccelerationStructures
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureHostCommands-03585",
"text": " The VkPhysicalDeviceAccelerationStructureFeaturesKHR
::accelerationStructureHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter",
"text": " pAccelerationStructures
must be a valid pointer to an array of accelerationStructureCount
valid VkAccelerationStructureKHR handles"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength",
"text": " accelerationStructureCount
must be greater than 0
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent",
"text": " Each element of pAccelerationStructures
must have been created, allocated, or retrieved from device
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06742",
"text": " queryType
must be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06731",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
, then stride
must be a multiple of the size of VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06732",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR
, then pData
must point to a VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06733",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
, then stride
must be a multiple of the size of VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-06734",
"text": " If queryType
is VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR
, then pData
must point to a VkDeviceSize
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+!(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432",
"text": " queryType
must be VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR
or VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR
"
}
],
"(VK_NV_ray_tracing,VK_KHR_acceleration_structure)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-buffer-03784",
"text": " The buffer
used to create each acceleration structure in pAccelerationStructures
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCmdBuildMicromapsEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07461",
"text": " For each pInfos
[i], dstMicromap
must have been created with a value of VkMicromapCreateInfoEXT::size
greater than or equal to the memory size required by the build operation, as returned by vkGetMicromapBuildSizesEXT with pBuildInfo
= pInfos
[i]"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-mode-07462",
"text": " The mode
member of each element of pInfos
must be a valid VkBuildMicromapModeEXT value"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-dstMicromap-07463",
"text": " The dstMicromap
member of any element of pInfos
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07464",
"text": " For each element of pInfos
its type
member must match the value of VkMicromapCreateInfoEXT::type
when its dstMicromap
was created"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-dstMicromap-07465",
"text": " The range of memory backing the dstMicromap
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the dstMicromap
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-dstMicromap-07466",
"text": " The range of memory backing the dstMicromap
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any element of pInfos
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-scratchData-07467",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07508",
"text": " For each element of pInfos
, the buffer
used to create its dstMicromap
member must be bound to device memory"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07509",
"text": " If pInfos
[i].mode
is VK_BUILD_MICROMAP_MODE_BUILD_EXT
, all addresses between pInfos
[i].scratchData.deviceAddress
and pInfos
[i].scratchData.deviceAddress
+ N - 1 must be in the buffer device address range of the same buffer, where N is given by the buildScratchSize
member of the VkMicromapBuildSizesInfoEXT structure returned from a call to vkGetMicromapBuildSizesEXT with an identical VkMicromapBuildInfoEXT structure and primitive count"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-data-07510",
"text": " The buffers from which the buffer device addresses for all of the data
and triangleArray
members of all pInfos
[i] are queried must have been created with the VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT
usage flag"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07511",
"text": " For each element of pInfos
[i] the buffer from which the buffer device address pInfos
[i].scratchData.deviceAddress
is queried must have been created with VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
usage flag"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07512",
"text": " For each element of pInfos
, its scratchData.deviceAddress
, data.deviceAddress
, and triangleArray.deviceAddress
members must be valid device addresses obtained from vkGetBufferDeviceAddress"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07513",
"text": " For each element of pInfos
, if scratchData.deviceAddress
, data.deviceAddress
, or triangleArray.deviceAddress
is the address of a non-sparse buffer then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07514",
"text": " For each element of pInfos
, its scratchData.deviceAddress
member must be a multiple of VkPhysicalDeviceAccelerationStructurePropertiesKHR::minAccelerationStructureScratchOffsetAlignment
"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-07515",
"text": " For each element of pInfos
, its triangleArray.deviceAddress
and data.deviceAddress
members must be a multiple of 256
"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-pInfos-parameter",
"text": " pInfos
must be a valid pointer to an array of infoCount
valid VkMicromapBuildInfoEXT structures"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBuildMicromapsEXT-infoCount-arraylength",
"text": " infoCount
must be greater than 0
"
}
]
},
"VkMicromapBuildInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMicromapBuildInfoEXT-pUsageCounts-07516",
"text": " Only one of pUsageCounts
or ppUsageCounts
can be a valid pointer, the other must be NULL
."
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-type-07517",
"text": " If type
is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
the format
member of VkMicromapUsageEXT must be a valid value from VkOpacityMicromapFormatEXT
"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-type-07518",
"text": " If type
is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
the format
member of VkMicromapTriangleEXT must be a valid value from VkOpacityMicromapFormatEXT
"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT
"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-type-parameter",
"text": " type
must be a valid VkMicromapTypeEXT value"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-flags-parameter",
"text": " flags
must be a valid combination of VkBuildMicromapFlagBitsEXT values"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-pUsageCounts-parameter",
"text": " If usageCountsCount
is not 0
, and pUsageCounts
is not NULL
, pUsageCounts
must be a valid pointer to an array of usageCountsCount
VkMicromapUsageEXT structures"
},
{
"vuid": "VUID-VkMicromapBuildInfoEXT-ppUsageCounts-parameter",
"text": " If usageCountsCount
is not 0
, and ppUsageCounts
is not NULL
, ppUsageCounts
must be a valid pointer to an array of usageCountsCount
valid pointers to VkMicromapUsageEXT structures"
}
]
},
"VkMicromapUsageEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMicromapUsageEXT-format-07519",
"text": " If the VkMicromapTypeEXT of the micromap is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
then format
must be VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT
or VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT
."
},
{
"vuid": "VUID-VkMicromapUsageEXT-format-07520",
"text": " If the VkMicromapTypeEXT of the micromap is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
and format
is VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT
then subdivisionLevel
must be less than or equal to maxOpacity2StateSubdivisionLevel
of VkPhysicalDeviceOpacityMicromapPropertiesEXT"
},
{
"vuid": "VUID-VkMicromapUsageEXT-format-07521",
"text": " If the VkMicromapTypeEXT of the micromap is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
and format
is VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT
then subdivisionLevel
must be less than or equal to maxOpacity4StateSubdivisionLevel
of VkPhysicalDeviceOpacityMicromapPropertiesEXT"
}
]
},
"VkMicromapTriangleEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMicromapTriangleEXT-format-07522",
"text": " If the VkMicromapTypeEXT of the micromap is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
then format
must be VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT
or VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT
."
},
{
"vuid": "VUID-VkMicromapTriangleEXT-format-07523",
"text": " If the VkMicromapTypeEXT of the micromap is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
and format
is VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT
then subdivisionLevel
must be less than or equal to maxOpacity2StateSubdivisionLevel
of VkPhysicalDeviceOpacityMicromapPropertiesEXT"
},
{
"vuid": "VUID-VkMicromapTriangleEXT-format-07524",
"text": " If the VkMicromapTypeEXT of the micromap is VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT
and format
is VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT
then subdivisionLevel
must be less than or equal to maxOpacity4StateSubdivisionLevel
of VkPhysicalDeviceOpacityMicromapPropertiesEXT"
}
]
},
"vkCmdWriteMicromapsPropertiesEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07525",
"text": " queryPool
must have been created with a queryType
matching queryType
"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-07526",
"text": " The queries identified by queryPool
and firstQuery
must be unavailable"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-buffer-07527",
"text": " The buffer
used to create each micromap in pMicrmaps
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-query-07528",
"text": " The sum of query
plus micromapCount
must be less than or equal to the number of queries in queryPool
"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07501",
"text": " All micromaps in pMicromaps
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-07502",
"text": " All micromaps in pMicromaps
must have been constructed with VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
if queryType
is VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT
"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-07503",
"text": " queryType
must be VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT
or VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT
"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-pMicromaps-parameter",
"text": " pMicromaps
must be a valid pointer to an array of micromapCount
valid VkMicromapEXT handles"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-queryPool-parameter",
"text": " queryPool
must be a valid VkQueryPool handle"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-micromapCount-arraylength",
"text": " micromapCount
must be greater than 0
"
},
{
"vuid": "VUID-vkCmdWriteMicromapsPropertiesEXT-commonparent",
"text": " Each of commandBuffer
, queryPool
, and the elements of pMicromaps
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdCopyMicromapEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCmdCopyMicromapEXT-buffer-07529",
"text": " The buffer
used to create pInfo->src
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-buffer-07530",
"text": " The buffer
used to create pInfo->dst
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMicromapInfoEXT structure"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyMicromapEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyMicromapInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkCopyMicromapInfoEXT-mode-07531",
"text": " mode
must be VK_COPY_MICROMAP_MODE_COMPACT_EXT
or VK_COPY_MICROMAP_MODE_CLONE_EXT
"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-src-07532",
"text": " The source acceleration structure src
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-mode-07533",
"text": " If mode
is VK_COPY_MICROMAP_MODE_COMPACT_EXT
, src
must have been constructed with VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
in the build"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-buffer-07534",
"text": " The buffer
used to create src
must be bound to device memory"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-buffer-07535",
"text": " The buffer
used to create dst
must be bound to device memory"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT
"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-src-parameter",
"text": " src
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-dst-parameter",
"text": " dst
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-mode-parameter",
"text": " mode
must be a valid VkCopyMicromapModeEXT value"
},
{
"vuid": "VUID-VkCopyMicromapInfoEXT-commonparent",
"text": " Both of dst
, and src
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdCopyMicromapToMemoryEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07536",
"text": " pInfo->dst.deviceAddress
must be a valid device address for a buffer bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07537",
"text": " pInfo->dst.deviceAddress
must be aligned to 256
bytes"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-07538",
"text": " If the buffer pointed to by pInfo->dst.deviceAddress
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-buffer-07539",
"text": " The buffer
used to create pInfo->src
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMicromapToMemoryInfoEXT structure"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyMicromapToMemoryEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyMicromapToMemoryInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-src-07540",
"text": " The source micromap src
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-dst-07541",
"text": " The memory pointed to by dst
must be at least as large as the serialization size of src
, as reported by vkWriteMicromapsPropertiesEXT or vkCmdWriteMicromapsPropertiesEXT with a query type of VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT
"
},
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-mode-07542",
"text": " mode
must be VK_COPY_MICROMAP_MODE_SERIALIZE_EXT
"
},
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT
"
},
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-src-parameter",
"text": " src
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-VkCopyMicromapToMemoryInfoEXT-mode-parameter",
"text": " mode
must be a valid VkCopyMicromapModeEXT value"
}
]
},
"vkCmdCopyMemoryToMicromapEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07543",
"text": " pInfo->src.deviceAddress
must be a valid device address for a buffer bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07544",
"text": " pInfo->src.deviceAddress
must be aligned to 256
bytes"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-07545",
"text": " If the buffer pointed to by pInfo->src.deviceAddress
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-buffer-07546",
"text": " The buffer
used to create pInfo->dst
must be bound to device memory"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMemoryToMicromapInfoEXT structure"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdCopyMemoryToMicromapEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCopyMemoryToMicromapInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-src-07547",
"text": " The source memory pointed to by src
must contain data previously serialized using vkCmdCopyMicromapToMemoryEXT"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-mode-07548",
"text": " mode
must be VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT
"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-src-07549",
"text": " The data in src
must have a format compatible with the destination physical device as returned by vkGetDeviceMicromapCompatibilityEXT"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-dst-07550",
"text": " dst
must have been created with a size
greater than or equal to that used to serialize the data in src
"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT
"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-dst-parameter",
"text": " dst
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-VkCopyMemoryToMicromapInfoEXT-mode-parameter",
"text": " mode
must be a valid VkCopyMicromapModeEXT value"
}
]
},
"vkGetDeviceMicromapCompatibilityEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-micromap-07551",
"text": " The micromap
feature must be enabled"
},
{
"vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-pVersionInfo-parameter",
"text": " pVersionInfo
must be a valid pointer to a valid VkMicromapVersionInfoEXT structure"
},
{
"vuid": "VUID-vkGetDeviceMicromapCompatibilityEXT-pCompatibility-parameter",
"text": " pCompatibility
must be a valid pointer to a VkAccelerationStructureCompatibilityKHR value"
}
]
},
"VkMicromapVersionInfoEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkMicromapVersionInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT
"
},
{
"vuid": "VUID-VkMicromapVersionInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkMicromapVersionInfoEXT-pVersionData-parameter",
"text": " pVersionData
must be a valid pointer to an array of \\(2 \\times \\mathtt{VK\\_UUID\\_SIZE}\\) uint8_t
values"
}
]
},
"vkBuildMicromapsEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07461",
"text": " For each pInfos
[i], dstMicromap
must have been created with a value of VkMicromapCreateInfoEXT::size
greater than or equal to the memory size required by the build operation, as returned by vkGetMicromapBuildSizesEXT with pBuildInfo
= pInfos
[i]"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-mode-07462",
"text": " The mode
member of each element of pInfos
must be a valid VkBuildMicromapModeEXT value"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-dstMicromap-07463",
"text": " The dstMicromap
member of any element of pInfos
must be a valid VkMicromapEXT handle"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07464",
"text": " For each element of pInfos
its type
member must match the value of VkMicromapCreateInfoEXT::type
when its dstMicromap
was created"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-dstMicromap-07465",
"text": " The range of memory backing the dstMicromap
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the dstMicromap
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-dstMicromap-07466",
"text": " The range of memory backing the dstMicromap
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any element of pInfos
(including the same element), which is accessed by this command"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-scratchData-07467",
"text": " The range of memory backing the scratchData
member of any element of pInfos
that is accessed by this command must not overlap the memory backing the scratchData
member of any other element of pInfos
, which is accessed by this command"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07552",
"text": " For each element of pInfos
, the buffer
used to create its dstMicromap
member must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07553",
"text": " For each element of pInfos
, all referenced addresses of pInfos
[i].data.hostAddress
must be valid host memory"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07554",
"text": " For each element of pInfos
, all referenced addresses of pInfos
[i].triangleArray.hostAddress
must be valid host memory"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-micromapHostCommands-07555",
"text": " The VkPhysicalDeviceOpacityMicromapFeaturesEXT
::micromapHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07556",
"text": " If pInfos
[i].mode
is VK_BUILD_MICROMAP_MODE_BUILD_EXT
, all addresses between pInfos
[i].scratchData.hostAddress
and pInfos
[i].scratchData.hostAddress
+ N - 1 must be valid host memory, where N is given by the buildScratchSize
member of the VkMicromapBuildSizesInfoEXT structure returned from a call to vkGetMicromapBuildSizesEXT with an identical VkMicromapBuildInfoEXT structure and primitive count"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-parameter",
"text": " pInfos
must be a valid pointer to an array of infoCount
valid VkMicromapBuildInfoEXT structures"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-infoCount-arraylength",
"text": " infoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkBuildMicromapsEXT-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_EXT_opacity_micromap)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkBuildMicromapsEXT-pInfos-07557",
"text": " For each element of pInfos
, the buffer
used to create its dstMicromap
member must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCopyMicromapEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCopyMicromapEXT-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCopyMicromapEXT-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCopyMicromapEXT-buffer-07558",
"text": " The buffer
used to create pInfo->src
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyMicromapEXT-buffer-07559",
"text": " The buffer
used to create pInfo->dst
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyMicromapEXT-micromapHostCommands-07560",
"text": " The VkPhysicalDeviceOpacityMicromapFeaturesEXT
::micromapHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCopyMicromapEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCopyMicromapEXT-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCopyMicromapEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMicromapInfoEXT structure"
},
{
"vuid": "VUID-vkCopyMicromapEXT-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_EXT_opacity_micromap)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCopyMicromapEXT-buffer-07561",
"text": " The buffer
used to create pInfo->src
must be bound to memory that was not allocated with multiple instances"
},
{
"vuid": "VUID-vkCopyMicromapEXT-buffer-07562",
"text": " The buffer
used to create pInfo->dst
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCopyMemoryToMicromapEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-pInfo-07563",
"text": " pInfo->src.hostAddress
must be a valid host pointer"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-pInfo-07564",
"text": " pInfo->src.hostAddress
must be aligned to 16 bytes"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-buffer-07565",
"text": " The buffer
used to create pInfo->dst
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-micromapHostCommands-07566",
"text": " The VkPhysicalDeviceOpacityMicromapFeaturesEXT
::micromapHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMemoryToMicromapInfoEXT structure"
},
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_EXT_opacity_micromap)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCopyMemoryToMicromapEXT-buffer-07567",
"text": " The buffer
used to create pInfo->dst
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCopyMicromapToMemoryEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-03677",
"text": " If deferredOperation
is not VK_NULL_HANDLE, it must be a valid VkDeferredOperationKHR object"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-03678",
"text": " Any previous deferred operation that was associated with deferredOperation
must be complete"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-buffer-07568",
"text": " The buffer
used to create pInfo->src
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-pInfo-07569",
"text": " pInfo->dst.hostAddress
must be a valid host pointer"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-pInfo-07570",
"text": " pInfo->dst.hostAddress
must be aligned to 16 bytes"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-micromapHostCommands-07571",
"text": " The VkPhysicalDeviceOpacityMicromapFeaturesEXT
::micromapHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parameter",
"text": " If deferredOperation
is not VK_NULL_HANDLE, deferredOperation
must be a valid VkDeferredOperationKHR handle"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-pInfo-parameter",
"text": " pInfo
must be a valid pointer to a valid VkCopyMicromapToMemoryInfoEXT structure"
},
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-deferredOperation-parent",
"text": " If deferredOperation
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
],
"(VK_EXT_opacity_micromap)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCopyMicromapToMemoryEXT-buffer-07572",
"text": " The buffer
used to create pInfo->src
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkWriteMicromapsPropertiesEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07501",
"text": " All micromaps in pMicromaps
must have been constructed prior to the execution of this command"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-07502",
"text": " All micromaps in pMicromaps
must have been constructed with VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT
if queryType
is VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-07503",
"text": " queryType
must be VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT
or VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-07573",
"text": " If queryType
is VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT
, then stride
must be a multiple of the size of VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-07574",
"text": " If queryType
is VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT
, then pData
must point to a VkDeviceSize
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-07575",
"text": " If queryType
is"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-dataSize-07576",
"text": " dataSize
must be greater than or equal to micromapCount
*stride
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-buffer-07577",
"text": " The buffer
used to create each micromap in pMicromaps
must be bound to host-visible device memory"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-micromapHostCommands-07578",
"text": " The VkPhysicalDeviceOpacityMicromapFeaturesEXT
::micromapHostCommands
feature must be enabled"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parameter",
"text": " pMicromaps
must be a valid pointer to an array of micromapCount
valid VkMicromapEXT handles"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-queryType-parameter",
"text": " queryType
must be a valid VkQueryType value"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-micromapCount-arraylength",
"text": " micromapCount
must be greater than 0
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
},
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-pMicromaps-parent",
"text": " Each element of pMicromaps
must have been created, allocated, or retrieved from device
"
}
],
"(VK_EXT_opacity_micromap)+(VK_KHR_device_group,VK_VERSION_1_1)": [
{
"vuid": "VUID-vkWriteMicromapsPropertiesEXT-buffer-07579",
"text": " The buffer
used to create each micromap in pMicromaps
must be bound to memory that was not allocated with multiple instances"
}
]
},
"vkCmdTraceRaysNV": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-03429",
"text": " Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-04624",
"text": " commandBuffer
must not be a protected command buffer"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03625",
"text": " This command must not cause a pipeline trace ray instruction to be executed from a shader invocation with a recursion depth greater than the value of maxRecursionDepth
used to create the bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042",
"text": " If raygenShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
"text": " raygenShaderBindingOffset
must be less than the size of raygenShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
"text": " raygenShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043",
"text": " If missShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
"text": " missShaderBindingOffset
must be less than the size of missShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
"text": " missShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044",
"text": " If hitShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
"text": " hitShaderBindingOffset
must be less than the size of hitShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
"text": " hitShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045",
"text": " If callableShaderBindingTableBuffer
is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
"text": " callableShaderBindingOffset
must be less than the size of callableShaderBindingTableBuffer
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
"text": " callableShaderBindingOffset
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
"text": " missShaderBindingStride
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
"text": " hitShaderBindingStride
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
"text": " callableShaderBindingStride
must be a multiple of VkPhysicalDeviceRayTracingPropertiesNV
::shaderGroupHandleSize
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
"text": " missShaderBindingStride
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
"text": " hitShaderBindingStride
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
"text": " callableShaderBindingStride
must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-width-02469",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0]"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-height-02470",
"text": " height
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1]"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
"text": " depth
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2]"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
"text": " raygenShaderBindingTableBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
"text": " If missShaderBindingTableBuffer
is not VK_NULL_HANDLE, missShaderBindingTableBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
"text": " If hitShaderBindingTableBuffer
is not VK_NULL_HANDLE, hitShaderBindingTableBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
"text": " If callableShaderBindingTableBuffer
is not VK_NULL_HANDLE, callableShaderBindingTableBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-commonparent",
"text": " Each of callableShaderBindingTableBuffer
, commandBuffer
, hitShaderBindingTableBuffer
, missShaderBindingTableBuffer
, and raygenShaderBindingTableBuffer
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdTraceRaysNV-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
]
},
"vkCmdTraceRaysKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-03429",
"text": " Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-maxPipelineRayRecursionDepth-03679",
"text": " This command must not cause a shader call instruction to be executed from a shader invocation with a recursion depth greater than the value of maxPipelineRayRecursionDepth
used to create the bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-03635",
"text": " commandBuffer
must not be a protected command buffer"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-size-04023",
"text": " The size
member of pRayGenShaderBindingTable
must be equal to its stride
member"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03680",
"text": " If the buffer from which pname:pRayGenShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03681",
"text": " The buffer from which the pname:pRayGenShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-03682",
"text": " pname:pRayGenShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03683",
"text": " If the buffer from which pname:pMissShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03684",
"text": " The buffer from which the pname:pMissShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-03685",
"text": " pname:pMissShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-stride-03686",
"text": " pname:pMissShaderBindingTable->stride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-stride-04029",
"text": " pname:pMissShaderBindingTable->stride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03687",
"text": " If the buffer from which pname:pHitShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03688",
"text": " The buffer from which the pname:pHitShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-03689",
"text": " pname:pHitShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-stride-03690",
"text": " pname:pHitShaderBindingTable->stride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-stride-04035",
"text": " pname:pHitShaderBindingTable->stride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03691",
"text": " If the buffer from which pname:pCallableShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03692",
"text": " The buffer from which the pname:pCallableShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-03693",
"text": " pname:pCallableShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-stride-03694",
"text": " pname:pCallableShaderBindingTable->stride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-stride-04041",
"text": " pname:pCallableShaderBindingTable->stride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-03696",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, pname:pHitShaderBindingTable->deviceAddress must not be zero"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-03697",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, pname:pHitShaderBindingTable->deviceAddress must not be zero"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-03511",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, the shader group handle identified by pname:pMissShaderBindingTable->deviceAddress must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-03512",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed as a result of this command in order to execute an any-hit shader must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-03513",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed as a result of this command in order to execute a closest hit shader must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-03514",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed as a result of this command in order to execute an intersection shader must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04735",
"text": " Any non-zero hit shader group entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed by this call from a geometry with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
must have been created with VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04736",
"text": " Any non-zero hit shader group entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed by this call from a geometry with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
must have been created with VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-width-03638",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[0]"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-height-03639",
"text": " height
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[1]"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-depth-03640",
"text": " depth
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[2]"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-width-03641",
"text": " width
{times} height
{times} depth
must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxRayDispatchInvocationCount
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter",
"text": " pRaygenShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter",
"text": " pMissShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter",
"text": " pHitShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter",
"text": " pCallableShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdTraceRaysKHR-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
]
},
"VkStridedDeviceAddressRegionKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04631",
"text": " If size
is not zero, all addresses between deviceAddress
and deviceAddress
+ size
- 1 must be in the buffer device address range of the same buffer"
},
{
"vuid": "VUID-VkStridedDeviceAddressRegionKHR-size-04632",
"text": " If size
is not zero, stride
must be less than or equal to the size of the buffer from which deviceAddress
was queried"
}
]
},
"vkCmdBindInvocationMaskHUAWEI": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-None-04976",
"text": " The invocationMask
feature must be enabled"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04977",
"text": " If imageView
is not VK_NULL_HANDLE, it must be a valid VkImageView handle of type VK_IMAGE_VIEW_TYPE_2D
"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04978",
"text": " If imageView
is not VK_NULL_HANDLE, it must have a format of VK_FORMAT_R8_UINT
"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04979",
"text": " If imageView
is not VK_NULL_HANDLE, it must have been created with VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI
set"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-04980",
"text": " If imageView
is not VK_NULL_HANDLE, imageLayout
must be VK_IMAGE_LAYOUT_GENERAL
"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-width-04981",
"text": " Thread mask image resolution must match the width
and height
in vkCmdTraceRaysKHR"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-None-04982",
"text": " Each element in the invocation mask image must have the value 0
or 1
. The value 1 means the invocation is active"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-width-04983",
"text": " width
in vkCmdTraceRaysKHR should be 1"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageView-parameter",
"text": " If imageView
is not VK_NULL_HANDLE, imageView
must be a valid VkImageView handle"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-imageLayout-parameter",
"text": " imageLayout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBindInvocationMaskHUAWEI-commonparent",
"text": " Both of commandBuffer
, and imageView
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkCmdTraceRaysIndirectKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429",
"text": " Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxPipelineRayRecursionDepth-03679",
"text": " This command must not cause a shader call instruction to be executed from a shader invocation with a recursion depth greater than the value of maxPipelineRayRecursionDepth
used to create the bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-03635",
"text": " commandBuffer
must not be a protected command buffer"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023",
"text": " The size
member of pRayGenShaderBindingTable
must be equal to its stride
member"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03680",
"text": " If the buffer from which pname:pRayGenShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03681",
"text": " The buffer from which the pname:pRayGenShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-03682",
"text": " pname:pRayGenShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03683",
"text": " If the buffer from which pname:pMissShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03684",
"text": " The buffer from which the pname:pMissShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-03685",
"text": " pname:pMissShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03686",
"text": " pname:pMissShaderBindingTable->stride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029",
"text": " pname:pMissShaderBindingTable->stride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03687",
"text": " If the buffer from which pname:pHitShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03688",
"text": " The buffer from which the pname:pHitShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-03689",
"text": " pname:pHitShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03690",
"text": " pname:pHitShaderBindingTable->stride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035",
"text": " pname:pHitShaderBindingTable->stride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03691",
"text": " If the buffer from which pname:pCallableShaderBindingTable->deviceAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03692",
"text": " The buffer from which the pname:pCallableShaderBindingTable->deviceAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-03693",
"text": " pname:pCallableShaderBindingTable->deviceAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-03694",
"text": " pname:pCallableShaderBindingTable->stride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041",
"text": " pname:pCallableShaderBindingTable->stride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03696",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, pname:pHitShaderBindingTable->deviceAddress must not be zero"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03697",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, pname:pHitShaderBindingTable->deviceAddress must not be zero"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, the shader group handle identified by pname:pMissShaderBindingTable->deviceAddress must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed as a result of this command in order to execute an any-hit shader must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed as a result of this command in order to execute a closest hit shader must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed as a result of this command in order to execute an intersection shader must not be set to zero"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04735",
"text": " Any non-zero hit shader group entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed by this call from a geometry with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
must have been created with VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04736",
"text": " Any non-zero hit shader group entries in the table identified by pname:pHitShaderBindingTable->deviceAddress accessed by this call from a geometry with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
must have been created with VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03632",
"text": " If the buffer from which indirectDeviceAddress
was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03633",
"text": " The buffer from which indirectDeviceAddress
was queried must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03634",
"text": " indirectDeviceAddress
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-indirectDeviceAddress-03636",
"text": " All device addresses between indirectDeviceAddress
and indirectDeviceAddress
+ sizeof
(sname:VkTraceRaysIndirectCommandKHR) - 1 must be in the buffer device address range of the same buffer"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingPipelineTraceRaysIndirect-03637",
"text": " The pname:rayTracingPipelineTraceRaysIndirect feature must be enabled"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter",
"text": " pRaygenShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter",
"text": " pMissShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter",
"text": " pHitShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter",
"text": " pCallableShaderBindingTable
must be a valid pointer to a valid VkStridedDeviceAddressRegionKHR structure"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951",
"text": " If the bound ray tracing pipeline was created with VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
::rayTracingMotionBlurPipelineTraceRaysIndirect
feature must be enabled"
}
]
},
"VkTraceRaysIndirectCommandKHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03638",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[0]"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03639",
"text": " height
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[1]"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03640",
"text": " depth
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[2]"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03641",
"text": " width
{times} height
{times} depth
must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxRayDispatchInvocationCount
"
}
]
},
"vkCmdTraceRaysIndirect2KHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-magFilter-04553",
"text": " If a VkSampler created with magFilter
or minFilter
equal to VK_FILTER_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-mipmapMode-04770",
"text": " If a VkSampler created with mipmapMode
equal to VK_SAMPLER_MIPMAP_MODE_LINEAR
and compareEnable
equal to VK_FALSE
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02691",
"text": " If a VkImageView
is accessed using atomic operations as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02697",
"text": " For each set n that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a descriptor set must have been bound to n at the same pipeline bind point, with a VkPipelineLayout
that is compatible for set n, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02699",
"text": " Descriptors in each bound descriptor set, specified via vkCmdBindDescriptorSets
, must be valid if they are statically used by the VkPipeline
bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02700",
"text": " A valid pipeline must be bound to the pipeline bind point used by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-02701",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command requires any dynamic state, that state must have been set or inherited (if the VK_NV_inherited_viewport_scissor
extension is enabled) for commandBuffer
, and done so after any previously bound pipeline with the corresponding state not specified as dynamic"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02859",
"text": " There must not have been any calls to dynamic state setting commands for any state not specified as dynamic in the VkPipeline
object bound to the pipeline bind point used by this command, since that pipeline was bound"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02702",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used to sample from any VkImage
with a VkImageView
of the type VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, VK_IMAGE_VIEW_TYPE_1D_ARRAY
, VK_IMAGE_VIEW_TYPE_2D_ARRAY
or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02703",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions with ImplicitLod
, Dref
or Proj
in their name, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02704",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
object that uses unnormalized coordinates, that sampler must not be used with any of the SPIR-V OpImageSample*
or OpImageSparseSample*
instructions that includes a LOD bias or any offset values, in any shader stage"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-04115",
"text": " If a VkImageView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the image view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWrite-04469",
"text": " If a VkBufferView is accessed using OpImageWrite
as a result of this command, then the Type
of the Texel
operand of that instruction must have at least as many components as the buffer view’s format"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-07288",
"text": " Any shader invocation executed by this command must terminate"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-03429",
"text": " Any shader group handle referenced by this call must have been queried from the currently bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-maxPipelineRayRecursionDepth-03679",
"text": " This command must not cause a shader call instruction to be executed from a shader invocation with a recursion depth greater than the value of maxPipelineRayRecursionDepth
used to create the bound ray tracing pipeline"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-03635",
"text": " commandBuffer
must not be a protected command buffer"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03632",
"text": " If the buffer from which indirectDeviceAddress
was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03633",
"text": " The buffer from which indirectDeviceAddress
was queried must have been created with the VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
bit set"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03634",
"text": " indirectDeviceAddress
must be a multiple of 4
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-indirectDeviceAddress-03636",
"text": " All device addresses between indirectDeviceAddress
and indirectDeviceAddress
+ sizeof
(sname:VkTraceRaysIndirectCommand2KHR) - 1 must be in the buffer device address range of the same buffer"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-rayTracingPipelineTraceRaysIndirect2-03637",
"text": " The pname:rayTracingPipelineTraceRaysIndirect2 feature must be enabled"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support compute operations"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-aspectMask-06478",
"text": " If a VkImageView is sampled with depth comparison, the image view must have been created with an aspectMask
that contains VK_IMAGE_ASPECT_DEPTH_BIT
."
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-06479",
"text": " If a VkImageView is sampled with depth comparison, the image view’s format features must contain VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07027",
"text": " For any VkImageView being written as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07028",
"text": " For any VkImageView being read as a storage image where the image format field of the OpTypeImage
is Unknown
, the view’s format features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07029",
"text": " For any VkBufferView being written as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
, the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpTypeImage-07030",
"text": " Any VkBufferView being read as a storage texel buffer where the image format field of the OpTypeImage
is Unknown
then the view’s buffer features must contain VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02692",
"text": " If a VkImageView
is sampled with VK_FILTER_CUBIC_EXT
as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02693",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must not have a VkImageViewType of VK_IMAGE_VIEW_TYPE_3D
, VK_IMAGE_VIEW_TYPE_CUBE
, or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-filterCubic-02694",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubic
returned by vkGetPhysicalDeviceImageFormatProperties2
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-filterCubicMinmax-02695",
"text": " Any VkImageView being sampled with VK_FILTER_CUBIC_EXT
with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN
or VK_SAMPLER_REDUCTION_MODE_MAX
as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT
::filterCubicMinmax
returned by vkGetPhysicalDeviceImageFormatProperties2
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-flags-02696",
"text": " Any VkImage created with a VkImageCreateInfo::flags
containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV
sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE
"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02698",
"text": " For each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-maintenance4-06425",
"text": " If the maintenance4
feature is not enabled, then for each push constant that is statically used by the VkPipeline
bound to the pipeline bind point used by this command, a push constant value must have been set for the same pipeline bind point, with a VkPipelineLayout
that is compatible for push constants, with the VkPipelineLayout
used to create the current VkPipeline
, as described in Pipeline Layout Compatibility"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+!(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02705",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-02706",
"text": " If the robustBufferAccess
feature is not enabled, and if the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-uniformBuffers-06935",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a uniform buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for uniformBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-storageBuffers-06936",
"text": " If any stage of the VkPipeline
object bound to the pipeline bind point used by this command accesses a storage buffer, and that stage was created without enabling either VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT
or VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT
for storageBuffers
, and the robustBufferAccess
feature is not enabled, that stage must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_VERSION_1_1)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-02707",
"text": " If commandBuffer
is an unprotected command buffer and protectedNoFault
is not supported, any resource accessed by the VkPipeline object bound to the pipeline bind point used by this command must not be a protected resource"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-None-06550",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must only be used with OpImageSample*
or OpImageSparseSample*
instructions"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-ConstOffset-06551",
"text": " If the VkPipeline
object bound to the pipeline bind point used by this command accesses a VkSampler
or VkImageView
object that enables sampler {YCbCr} conversion, that object must not use the ConstOffset
and Offset
operands"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04470",
"text": " If a VkImageView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04471",
"text": " If a VkImageView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04472",
"text": " If a VkBufferView with a VkFormat that has a 64-bit component width is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 64"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-SampledType-04473",
"text": " If a VkBufferView with a VkFormat that has a component width less than 64-bit is accessed as a result of this command, the SampledType
of the OpTypeImage
operand of that instruction must have a Width
of 32"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-sparseImageInt64Atomics-04474",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkImage objects created with the VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-sparseImageInt64Atomics-04475",
"text": " If the sparseImageInt64Atomics
feature is not enabled, VkBuffer objects created with the VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT
flag must not be accessed by atomic instructions through an OpTypeImage
with a SampledType
with a Width
of 64 by this command"
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_QCOM_image_processing)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06971",
"text": " If OpImageWeightedSampleQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06972",
"text": " If OpImageWeightedSampleQCOM
uses a VkImageView as a sample weight image as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBoxFilterQCOM-06973",
"text": " If OpImageBoxFilterQCOM
is used to sample a VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSSDQCOM-06974",
"text": " If OpImageBlockMatchSSDQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06975",
"text": " If OpImageBlockMatchSADQCOM
is used to read from an VkImageView as a result of this command, then the image view’s format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM
"
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06976",
"text": " If OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation."
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06977",
"text": " If OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
},
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-OpImageWeightedSampleQCOM-06978",
"text": " If any command other than OpImageWeightedSampleQCOM
, OpImageBoxFilterQCOM
, OpImageBlockMatchSSDQCOM
, or OpImageBlockMatchSADQCOM
uses a VkSampler as a result of this command, then the sampler must not have been created with VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM
."
}
],
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-vkCmdTraceRaysIndirect2KHR-rayTracingMotionBlurPipelineTraceRaysIndirect-04951",
"text": " If the bound ray tracing pipeline was created with VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
VkPhysicalDeviceRayTracingMotionBlurFeaturesNV
::rayTracingMotionBlurPipelineTraceRaysIndirect
feature must be enabled"
}
]
},
"VkTraceRaysIndirectCommand2KHR": {
"(VK_NV_ray_tracing,VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_pipeline)+(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03680",
"text": " If the buffer from which pname:raygenShaderRecordAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03681",
"text": " The buffer from which the pname:raygenShaderRecordAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pRayGenShaderBindingTable-03682",
"text": " pname:raygenShaderRecordAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03683",
"text": " If the buffer from which pname:missShaderBindingTableAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03684",
"text": " The buffer from which the pname:missShaderBindingTableAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pMissShaderBindingTable-03685",
"text": " pname:missShaderBindingTableAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-03686",
"text": " pname:missShaderBindingTableStride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-04029",
"text": " pname:missShaderBindingTableStride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03687",
"text": " If the buffer from which pname:hitShaderBindingTableAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03688",
"text": " The buffer from which the pname:hitShaderBindingTableAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-03689",
"text": " pname:hitShaderBindingTableAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-03690",
"text": " pname:hitShaderBindingTableStride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-04035",
"text": " pname:hitShaderBindingTableStride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03691",
"text": " If the buffer from which pname:callableShaderBindingTableAddress was queried is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory
object"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03692",
"text": " The buffer from which the pname:callableShaderBindingTableAddress is queried must have been created with the VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR
usage flag"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pCallableShaderBindingTable-03693",
"text": " pname:callableShaderBindingTableAddress must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupBaseAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-03694",
"text": " pname:callableShaderBindingTableStride must be a multiple of VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::shaderGroupHandleAlignment
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-stride-04041",
"text": " pname:callableShaderBindingTableStride must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxShaderGroupStride
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03696",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, pname:hitShaderBindingTableAddress must not be zero"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03697",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, pname:hitShaderBindingTableAddress must not be zero"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03511",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR
, the shader group handle identified by pname:missShaderBindingTableAddress must not be set to zero"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03512",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR
, entries in the table identified by pname:hitShaderBindingTableAddress accessed as a result of this command in order to execute an any-hit shader must not be set to zero"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03513",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR
, entries in the table identified by pname:hitShaderBindingTableAddress accessed as a result of this command in order to execute a closest hit shader must not be set to zero"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-flags-03514",
"text": " If the currently bound ray tracing pipeline was created with flags
that included VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR
, entries in the table identified by pname:hitShaderBindingTableAddress accessed as a result of this command in order to execute an intersection shader must not be set to zero"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-04735",
"text": " Any non-zero hit shader group entries in the table identified by pname:hitShaderBindingTableAddress accessed by this call from a geometry with a geometryType
of VK_GEOMETRY_TYPE_TRIANGLES_KHR
must have been created with VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-pHitShaderBindingTable-04736",
"text": " Any non-zero hit shader group entries in the table identified by pname:hitShaderBindingTableAddress accessed by this call from a geometry with a geometryType
of VK_GEOMETRY_TYPE_AABBS_KHR
must have been created with VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR
"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-width-03638",
"text": " width
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[0] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[0]"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-height-03639",
"text": " height
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[1] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[1]"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-depth-03640",
"text": " depth
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupCount
[2] {times} VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[2]"
},
{
"vuid": "VUID-VkTraceRaysIndirectCommand2KHR-width-03641",
"text": " width
{times} height
{times} depth
must be less than or equal to VkPhysicalDeviceRayTracingPipelinePropertiesKHR
::maxRayDispatchInvocationCount
"
}
]
},
"VkQueueFamilyVideoPropertiesKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkQueueFamilyVideoPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR
"
}
]
},
"VkVideoProfileInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-07013",
"text": " chromaSubsampling
must have a single bit set"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-lumaBitDepth-07014",
"text": " lumaBitDepth
must have a single bit set"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-07015",
"text": " If chromaSubsampling
is not VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR
, then chromaBitDepth
must have a single bit set"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-videoCodecOperation-parameter",
"text": " videoCodecOperation
must be a valid VkVideoCodecOperationFlagBitsKHR value"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-parameter",
"text": " chromaSubsampling
must be a valid combination of VkVideoChromaSubsamplingFlagBitsKHR values"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-chromaSubsampling-requiredbitmask",
"text": " chromaSubsampling
must not be 0
"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-lumaBitDepth-parameter",
"text": " lumaBitDepth
must be a valid combination of VkVideoComponentBitDepthFlagBitsKHR values"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-lumaBitDepth-requiredbitmask",
"text": " lumaBitDepth
must not be 0
"
},
{
"vuid": "VUID-VkVideoProfileInfoKHR-chromaBitDepth-parameter",
"text": " chromaBitDepth
must be a valid combination of VkVideoComponentBitDepthFlagBitsKHR values"
}
]
},
"VkVideoDecodeUsageInfoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkVideoDecodeUsageInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoDecodeUsageInfoKHR-videoUsageHints-parameter",
"text": " videoUsageHints
must be a valid combination of VkVideoDecodeUsageFlagBitsKHR values"
}
]
},
"VkVideoEncodeUsageInfoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkVideoEncodeUsageInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoEncodeUsageInfoKHR-videoUsageHints-parameter",
"text": " videoUsageHints
must be a valid combination of VkVideoEncodeUsageFlagBitsKHR values"
},
{
"vuid": "VUID-VkVideoEncodeUsageInfoKHR-videoContentHints-parameter",
"text": " videoContentHints
must be a valid combination of VkVideoEncodeContentFlagBitsKHR values"
},
{
"vuid": "VUID-VkVideoEncodeUsageInfoKHR-tuningMode-parameter",
"text": " If tuningMode
is not 0
, tuningMode
must be a valid VkVideoEncodeTuningModeKHR value"
}
]
},
"vkGetPhysicalDeviceVideoCapabilitiesKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pVideoProfile-parameter",
"text": " pVideoProfile
must be a valid pointer to a valid VkVideoProfileInfoKHR structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-pCapabilities-parameter",
"text": " pCapabilities
must be a valid pointer to a VkVideoCapabilitiesKHR structure"
}
]
},
"VkVideoCapabilitiesKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR
"
},
{
"vuid": "VUID-VkVideoCapabilitiesKHR-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 VkVideoDecodeCapabilitiesKHR, VkVideoDecodeH264CapabilitiesEXT, VkVideoDecodeH265CapabilitiesEXT, VkVideoEncodeCapabilitiesKHR, VkVideoEncodeH264CapabilitiesEXT, or VkVideoEncodeH265CapabilitiesEXT"
},
{
"vuid": "VUID-VkVideoCapabilitiesKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"vkGetPhysicalDeviceVideoFormatPropertiesKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pNext-06812",
"text": " The pNext
chain of pVideoFormatInfo
must include a valid VkVideoProfileListInfoKHR structure with profileCount
greater than 0
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pVideoFormatInfo-parameter",
"text": " pVideoFormatInfo
must be a valid pointer to a valid VkPhysicalDeviceVideoFormatInfoKHR structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pVideoFormatPropertyCount-parameter",
"text": " pVideoFormatPropertyCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-pVideoFormatProperties-parameter",
"text": " If the value referenced by pVideoFormatPropertyCount
is not 0
, and pVideoFormatProperties
is not NULL
, pVideoFormatProperties
must be a valid pointer to an array of pVideoFormatPropertyCount
VkVideoFormatPropertiesKHR structures"
}
]
},
"VkPhysicalDeviceVideoFormatInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR
"
},
{
"vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkVideoProfileListInfoKHR"
},
{
"vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-imageUsage-parameter",
"text": " imageUsage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceVideoFormatInfoKHR-imageUsage-requiredbitmask",
"text": " imageUsage
must not be 0
"
}
]
},
"VkVideoProfileListInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoProfileListInfoKHR-pProfiles-06813",
"text": " If the pProfiles
list contains more than one VkVideoProfileInfoKHR entry, then it must not contain more than one entry whose videoCodecOperation
member specifies a decode operation"
},
{
"vuid": "VUID-VkVideoProfileListInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoProfileListInfoKHR-pProfiles-parameter",
"text": " If profileCount
is not 0
, pProfiles
must be a valid pointer to an array of profileCount
valid VkVideoProfileInfoKHR structures"
}
]
},
"VkVideoFormatPropertiesKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoFormatPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR
"
},
{
"vuid": "VUID-VkVideoFormatPropertiesKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCreateVideoSessionKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkCreateVideoSessionKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateVideoSessionKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkVideoSessionCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateVideoSessionKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateVideoSessionKHR-pVideoSession-parameter",
"text": " pVideoSession
must be a valid pointer to a VkVideoSessionKHR handle"
}
]
},
"VkVideoSessionCreateInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pVideoProfile-04845",
"text": " pVideoProfile
must be a pointer to a valid VkVideoProfileInfoKHR structure whose pNext
chain must include a valid codec-specific profile structure"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-maxDpbSlots-04846",
"text": " If Reference Pictures are required for use with the created video session, the maxDpbSlots
must be set to a value bigger than 0
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-maxDpbSlots-04847",
"text": " maxDpbSlots
cannot exceed the implementation reported VkVideoCapabilitiesKHR::maxDpbSlots
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-maxActiveReferencePictures-04848",
"text": " If Reference Pictures are required for use with the created video session, the maxActiveReferencePictures
must be set to a value bigger than 0
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-maxActiveReferencePictures-04849",
"text": " maxActiveReferencePictures
cannot exceed the implementation reported VkVideoCapabilitiesKHR::maxActiveReferencePictures
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-maxActiveReferencePictures-04850",
"text": " maxActiveReferencePictures
cannot exceed the maxDpbSlots
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-maxCodedExtent-04851",
"text": " maxCodedExtent
cannot be smaller than VkVideoCapabilitiesKHR::minExtent
and bigger than VkVideoCapabilitiesKHR::maxExtent
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-referencePicturesFormat-04852",
"text": " If the videoCodecOperation
member of pVideoProfile
specifies a decode operation then referencePicturesFormat
must be one of the supported decode DPB formats as reported by vkGetPhysicalDeviceVideoFormatPropertiesKHR in the format
member of VkVideoFormatPropertiesKHR when called with the imageUsage
member of its pVideoFormatInfo
parameter containing VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR
, and with a VkVideoProfileListInfoKHR structure chained to its pVideoFormatInfo
parameter whose pProfiles
member contains an entry matching pVideoProfile
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-videoCodecOperation-06814",
"text": " If the videoCodecOperation
member of pVideoProfile
specifies an encode operation then referencePicturesFormat
must be one of the supported encode DPB formats as reported by vkGetPhysicalDeviceVideoFormatPropertiesKHR in the format
member of VkVideoFormatPropertiesKHR when called with the imageUsage
member of its pVideoFormatInfo
parameter containing VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR
, and with a VkVideoProfileListInfoKHR structure chained to its pVideoFormatInfo
parameter whose pProfiles
member contains an entry matching pVideoProfile
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pictureFormat-04853",
"text": " If the videoCodecOperation
member of pVideoProfile
specifies a decode operation then pictureFormat
must be one of the supported decode output formats as reported by vkGetPhysicalDeviceVideoFormatPropertiesKHR in the format
member of VkVideoFormatPropertiesKHR when called with the imageUsage
member of its pVideoFormatInfo
parameter containing VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR
, and with a VkVideoProfileListInfoKHR structure chained to its pVideoFormatInfo
parameter whose pProfiles
member contains an entry matching pVideoProfile
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pictureFormat-04854",
"text": " If the videoCodecOperation
member of pVideoProfile
specifies an encode operation then pictureFormat
must be one of the supported encode input formats as reported by vkGetPhysicalDeviceVideoFormatPropertiesKHR in the format
member of VkVideoFormatPropertiesKHR when called with the imageUsage
member of its pVideoFormatInfo
parameter containing VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR
, and with a VkVideoProfileListInfoKHR structure chained to its pVideoFormatInfo
parameter whose pProfiles
member contains an entry matching pVideoProfile
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkVideoSessionCreateFlagBitsKHR values"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pVideoProfile-parameter",
"text": " pVideoProfile
must be a valid pointer to a valid VkVideoProfileInfoKHR structure"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pictureFormat-parameter",
"text": " pictureFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-referencePictureFormat-parameter",
"text": " referencePictureFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkVideoSessionCreateInfoKHR-pStdHeaderVersion-parameter",
"text": " pStdHeaderVersion
must be a valid pointer to a valid VkExtensionProperties structure"
}
]
},
"vkDestroyVideoSessionKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkDestroyVideoSessionKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-parameter",
"text": " If videoSession
is not VK_NULL_HANDLE, videoSession
must be a valid VkVideoSessionKHR handle"
},
{
"vuid": "VUID-vkDestroyVideoSessionKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyVideoSessionKHR-videoSession-parent",
"text": " If videoSession
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkGetVideoSessionMemoryRequirementsKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-videoSession-parameter",
"text": " videoSession
must be a valid VkVideoSessionKHR handle"
},
{
"vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-pMemoryRequirementsCount-parameter",
"text": " pMemoryRequirementsCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-pMemoryRequirements-parameter",
"text": " If the value referenced by pMemoryRequirementsCount
is not 0
, and pMemoryRequirements
is not NULL
, pMemoryRequirements
must be a valid pointer to an array of pMemoryRequirementsCount
VkVideoSessionMemoryRequirementsKHR structures"
},
{
"vuid": "VUID-vkGetVideoSessionMemoryRequirementsKHR-videoSession-parent",
"text": " videoSession
must have been created, allocated, or retrieved from device
"
}
]
},
"VkVideoSessionMemoryRequirementsKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoSessionMemoryRequirementsKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR
"
},
{
"vuid": "VUID-VkVideoSessionMemoryRequirementsKHR-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkBindVideoSessionMemoryKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkBindVideoSessionMemoryKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkBindVideoSessionMemoryKHR-videoSession-parameter",
"text": " videoSession
must be a valid VkVideoSessionKHR handle"
},
{
"vuid": "VUID-vkBindVideoSessionMemoryKHR-pBindSessionMemoryInfos-parameter",
"text": " pBindSessionMemoryInfos
must be a valid pointer to an array of bindSessionMemoryInfoCount
valid VkBindVideoSessionMemoryInfoKHR structures"
},
{
"vuid": "VUID-vkBindVideoSessionMemoryKHR-bindSessionMemoryInfoCount-arraylength",
"text": " bindSessionMemoryInfoCount
must be greater than 0
"
},
{
"vuid": "VUID-vkBindVideoSessionMemoryKHR-videoSession-parent",
"text": " videoSession
must have been created, allocated, or retrieved from device
"
}
]
},
"VkBindVideoSessionMemoryInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR
"
},
{
"vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkBindVideoSessionMemoryInfoKHR-memory-parameter",
"text": " memory
must be a valid VkDeviceMemory handle"
}
]
},
"vkCreateVideoSessionParametersKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkCreateVideoSessionParametersKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateVideoSessionParametersKHR-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkVideoSessionParametersCreateInfoKHR structure"
},
{
"vuid": "VUID-vkCreateVideoSessionParametersKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateVideoSessionParametersKHR-pVideoSessionParameters-parameter",
"text": " pVideoSessionParameters
must be a valid pointer to a VkVideoSessionParametersKHR handle"
}
]
},
"VkVideoSessionParametersCreateInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-04855",
"text": " If videoSessionParametersTemplate
represents a valid handle, it must have been created against videoSession
"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-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 VkVideoDecodeH264SessionParametersCreateInfoEXT, VkVideoDecodeH265SessionParametersCreateInfoEXT, VkVideoEncodeH264SessionParametersCreateInfoEXT, or VkVideoEncodeH265SessionParametersCreateInfoEXT"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-parameter",
"text": " If videoSessionParametersTemplate
is not VK_NULL_HANDLE, videoSessionParametersTemplate
must be a valid VkVideoSessionParametersKHR handle"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSession-parameter",
"text": " videoSession
must be a valid VkVideoSessionKHR handle"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-videoSessionParametersTemplate-parent",
"text": " If videoSessionParametersTemplate
is a valid handle, it must have been created, allocated, or retrieved from videoSession
"
},
{
"vuid": "VUID-VkVideoSessionParametersCreateInfoKHR-commonparent",
"text": " Both of videoSession
, and videoSessionParametersTemplate
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"vkUpdateVideoSessionParametersKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkUpdateVideoSessionParametersKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkUpdateVideoSessionParametersKHR-videoSessionParameters-parameter",
"text": " videoSessionParameters
must be a valid VkVideoSessionParametersKHR handle"
},
{
"vuid": "VUID-vkUpdateVideoSessionParametersKHR-pUpdateInfo-parameter",
"text": " pUpdateInfo
must be a valid pointer to a valid VkVideoSessionParametersUpdateInfoKHR structure"
}
]
},
"VkVideoSessionParametersUpdateInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoSessionParametersUpdateInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoSessionParametersUpdateInfoKHR-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 VkVideoDecodeH264SessionParametersAddInfoEXT, VkVideoDecodeH265SessionParametersAddInfoEXT, VkVideoEncodeH264SessionParametersAddInfoEXT, or VkVideoEncodeH265SessionParametersAddInfoEXT"
},
{
"vuid": "VUID-VkVideoSessionParametersUpdateInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"vkDestroyVideoSessionParametersKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkDestroyVideoSessionParametersKHR-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyVideoSessionParametersKHR-videoSessionParameters-parameter",
"text": " If videoSessionParameters
is not VK_NULL_HANDLE, videoSessionParameters
must be a valid VkVideoSessionParametersKHR handle"
},
{
"vuid": "VUID-vkDestroyVideoSessionParametersKHR-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
}
]
},
"vkCmdBeginVideoCodingKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-pBeginInfo-parameter",
"text": " pBeginInfo
must be a valid pointer to a valid VkVideoBeginCodingInfoKHR structure"
},
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support decode, or encode operations"
},
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdBeginVideoCodingKHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
]
},
"VkVideoBeginCodingInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-referenceSlotCount-04856",
"text": " VkVideoBeginCodingInfoKHR::referenceSlotCount
must not exceed the value specified in VkVideoSessionCreateInfoKHR::maxDpbSlots
when creating the video session object that is being provided in videoSession
"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-04857",
"text": " If videoSessionParameters
is not VK_NULL_HANDLE, it must have been created using videoSession
as a parent object"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSession-parameter",
"text": " videoSession
must be a valid VkVideoSessionKHR handle"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-parameter",
"text": " If videoSessionParameters
is not VK_NULL_HANDLE, videoSessionParameters
must be a valid VkVideoSessionParametersKHR handle"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-pReferenceSlots-parameter",
"text": " If referenceSlotCount
is not 0
, pReferenceSlots
must be a valid pointer to an array of referenceSlotCount
valid VkVideoReferenceSlotInfoKHR structures"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-parent",
"text": " If videoSessionParameters
is a valid handle, it must have been created, allocated, or retrieved from videoSession
"
},
{
"vuid": "VUID-VkVideoBeginCodingInfoKHR-commonparent",
"text": " Both of videoSession
, and videoSessionParameters
that are valid handles of non-ignored parameters must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkVideoReferenceSlotInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoReferenceSlotInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoReferenceSlotInfoKHR-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 VkVideoDecodeH264DpbSlotInfoEXT or VkVideoDecodeH265DpbSlotInfoEXT"
},
{
"vuid": "VUID-VkVideoReferenceSlotInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkVideoReferenceSlotInfoKHR-pPictureResource-parameter",
"text": " If pPictureResource
is not NULL
, pPictureResource
must be a valid pointer to a valid VkVideoPictureResourceInfoKHR structure"
}
]
},
"VkVideoPictureResourceInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoPictureResourceInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoPictureResourceInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoPictureResourceInfoKHR-imageViewBinding-parameter",
"text": " imageViewBinding
must be a valid VkImageView handle"
}
]
},
"vkCmdEndVideoCodingKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-pEndCodingInfo-parameter",
"text": " pEndCodingInfo
must be a valid pointer to a valid VkVideoEndCodingInfoKHR structure"
},
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support decode, or encode operations"
},
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-videocoding",
"text": " This command must only be called inside of a video coding scope"
},
{
"vuid": "VUID-vkCmdEndVideoCodingKHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
]
},
"VkVideoEndCodingInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoEndCodingInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoEndCodingInfoKHR-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEndCodingInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
}
]
},
"vkCmdControlVideoCodingKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-pCodingControlInfo-parameter",
"text": " pCodingControlInfo
must be a valid pointer to a valid VkVideoCodingControlInfoKHR structure"
},
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support decode, or encode operations"
},
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-videocoding",
"text": " This command must only be called inside of a video coding scope"
},
{
"vuid": "VUID-vkCmdControlVideoCodingKHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
]
},
"VkVideoCodingControlInfoKHR": {
"(VK_KHR_video_queue)": [
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07016",
"text": " flags
must include at least one bit"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07017",
"text": " If the bound video session object is in uninitialized state, then flags
must include VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR
"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-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 VkVideoEncodeH264RateControlInfoEXT, VkVideoEncodeH264RateControlLayerInfoEXT, VkVideoEncodeH265RateControlInfoEXT, VkVideoEncodeH265RateControlLayerInfoEXT, VkVideoEncodeRateControlInfoKHR, or VkVideoEncodeRateControlLayerInfoKHR"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-parameter",
"text": " flags
must be a valid combination of VkVideoCodingControlFlagBitsKHR values"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-requiredbitmask",
"text": " flags
must not be 0
"
}
],
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07018",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR
, then the pNext
chain must include a valid VkVideoEncodeRateControlInfoKHR structure"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07019",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR
, then the pNext
chain must include a valid VkVideoEncodeRateControlLayerInfoKHR structure"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07020",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR
, then it must not also include VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR
"
}
],
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07021",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR
, the rateControlMode
member of VkVideoEncodeRateControlInfoKHR included in the pNext
chain is not VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR
, and the bound video session was created with VkVideoProfileInfoKHR::videoCodecOperation
set to VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT
, then the pNext
chain must include a VkVideoEncodeH264RateControlInfoEXT structure"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-pNext-07022",
"text": " If the pNext
chain includes a VkVideoEncodeRateControlInfoKHR, and VkVideoEncodeRateControlInfoKHR::layerCount
is greater than 1
, then VkVideoEncodeH264RateControlInfoEXT::temporalLayerCount
must be equal to layerCount
"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07023",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR
and the bound video session was created with VkVideoProfileInfoKHR::videoCodecOperation
set to VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT
, then the pNext
chain must include a VkVideoEncodeH264RateControlLayerInfoEXT structure"
}
],
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07024",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR
, the rateControlMode
member of VkVideoEncodeRateControlInfoKHR included in the pNext
chain is not VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR
, and the bound video session was created with VkVideoProfileInfoKHR::videoCodecOperation
set to VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT
, then the pNext
chain must include a VkVideoEncodeH265RateControlInfoEXT structure"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-pNext-07025",
"text": " If the pNext
chain includes a VkVideoEncodeRateControlInfoKHR, and VkVideoEncodeRateControlInfoKHR::layerCount
is greater than 1
, then VkVideoEncodeH265RateControlInfoEXT::subLayerCount
must be equal to layerCount
"
},
{
"vuid": "VUID-VkVideoCodingControlInfoKHR-flags-07026",
"text": " If flags
includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_LAYER_BIT_KHR
and the bound video session was created with VkVideoProfileInfoKHR::videoCodecOperation
set to VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT
, then the pNext
chain must include a VkVideoEncodeH265RateControlLayerInfoEXT structure"
}
]
},
"VkVideoDecodeCapabilitiesKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkVideoDecodeCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR
"
}
]
},
"vkCmdDecodeVideoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-vkCmdDecodeVideoKHR-None-07011",
"text": " The bound video session object must not be in uninitialized state"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-pDecodeInfo-parameter",
"text": " pDecodeInfo
must be a valid pointer to a valid VkVideoDecodeInfoKHR structure"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support decode operations"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-videocoding",
"text": " This command must only be called inside of a video coding scope"
},
{
"vuid": "VUID-vkCmdDecodeVideoKHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
]
},
"VkVideoDecodeInfoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_decode_queue)": [
{
"vuid": "VUID-VkVideoDecodeInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-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 VkVideoDecodeH264PictureInfoEXT or VkVideoDecodeH265PictureInfoEXT"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-srcBuffer-parameter",
"text": " srcBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-dstPictureResource-parameter",
"text": " dstPictureResource
must be a valid VkVideoPictureResourceInfoKHR structure"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-pSetupReferenceSlot-parameter",
"text": " If pSetupReferenceSlot
is not NULL
, pSetupReferenceSlot
must be a valid pointer to a valid VkVideoReferenceSlotInfoKHR structure"
},
{
"vuid": "VUID-VkVideoDecodeInfoKHR-pReferenceSlots-parameter",
"text": " If referenceSlotCount
is not 0
, pReferenceSlots
must be a valid pointer to an array of referenceSlotCount
valid VkVideoReferenceSlotInfoKHR structures"
}
]
},
"VkVideoDecodeH264ProfileInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h264)": [
{
"vuid": "VUID-VkVideoDecodeH264ProfileInfoEXT-pNext-06259",
"text": " If the VkVideoDecodeH264ProfileInfoEXT structure is included in the pNext
chain of the VkVideoCapabilitiesKHR structure passed to vkGetPhysicalDeviceVideoCapabilitiesKHR, the value in pictureLayout
is treated as a bitmask of requested picture layouts. It is always valid to use the value VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT
as the implementation is guaranteed to support decoding of progressive content."
},
{
"vuid": "VUID-VkVideoDecodeH264ProfileInfoEXT-pNext-06260",
"text": " If the VkVideoDecodeH264ProfileInfoEXT structure is included in the pNext
chain of the VkVideoSessionCreateInfoKHR structure passed to vkCreateVideoSessionKHR, the value in pictureLayout
must be exactly one of VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT
, VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT
or VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT
."
},
{
"vuid": "VUID-VkVideoDecodeH264ProfileInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH264ProfileInfoEXT-pictureLayout-parameter",
"text": " If pictureLayout
is not 0
, pictureLayout
must be a valid VkVideoDecodeH264PictureLayoutFlagBitsEXT value"
}
]
},
"VkVideoDecodeH264CapabilitiesEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h264)": [
{
"vuid": "VUID-VkVideoDecodeH264CapabilitiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_EXT
"
}
]
},
"VkVideoDecodeH264SessionParametersCreateInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h264)": [
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersCreateInfoEXT-pParametersAddInfo-parameter",
"text": " If pParametersAddInfo
is not NULL
, pParametersAddInfo
must be a valid pointer to a valid VkVideoDecodeH264SessionParametersAddInfoEXT structure"
}
]
},
"VkVideoDecodeH264SessionParametersAddInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h264)": [
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-stdSPSCount-04822",
"text": " The values of stdSPSCount
and stdPPSCount
must be less than or equal to the values of maxStdSPSCount
and maxStdPPSCount
, respectively"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-maxStdSPSCount-04823",
"text": " When the maxStdSPSCount
number of parameters of type StdVideoH264SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to this object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-maxStdPPSCount-04824",
"text": " When the maxStdPPSCount
number of parameters of type StdVideoH264PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to this object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-None-04825",
"text": " Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, SPS-PPS IDs"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-None-04826",
"text": " Parameter entries that already exist in Video Session Parameters object with a particular SPS-PPS IDs cannot be replaced nor updated"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-None-04827",
"text": " When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same SPS-PPS IDs as the ones from the template take precedence"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-None-04828",
"text": " SPS/PPS parameters must comply with the limits specified in VkVideoSessionCreateInfoKHR during Video Session creation"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-pStdSPSs-parameter",
"text": " If stdSPSCount
is not 0
, pStdSPSs
must be a valid pointer to an array of stdSPSCount
StdVideoH264SequenceParameterSet
values"
},
{
"vuid": "VUID-VkVideoDecodeH264SessionParametersAddInfoEXT-pStdPPSs-parameter",
"text": " If stdPPSCount
is not 0
, pStdPPSs
must be a valid pointer to an array of stdPPSCount
StdVideoH264PictureParameterSet
values"
}
]
},
"VkVideoDecodeH264PictureInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h264)": [
{
"vuid": "VUID-VkVideoDecodeH264PictureInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH264PictureInfoEXT-pStdPictureInfo-parameter",
"text": " pStdPictureInfo
must be a valid pointer to a valid StdVideoDecodeH264PictureInfo
value"
},
{
"vuid": "VUID-VkVideoDecodeH264PictureInfoEXT-pSliceOffsets-parameter",
"text": " pSliceOffsets
must be a valid pointer to an array of sliceCount
uint32_t
values"
},
{
"vuid": "VUID-VkVideoDecodeH264PictureInfoEXT-sliceCount-arraylength",
"text": " sliceCount
must be greater than 0
"
}
]
},
"VkVideoDecodeH264DpbSlotInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h264)": [
{
"vuid": "VUID-VkVideoDecodeH264DpbSlotInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH264DpbSlotInfoEXT-pStdReferenceInfo-parameter",
"text": " pStdReferenceInfo
must be a valid pointer to a valid StdVideoDecodeH264ReferenceInfo
value"
}
]
},
"VkVideoDecodeH265ProfileInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h265)": [
{
"vuid": "VUID-VkVideoDecodeH265ProfileInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_EXT
"
}
]
},
"VkVideoDecodeH265CapabilitiesEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h265)": [
{
"vuid": "VUID-VkVideoDecodeH265CapabilitiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_EXT
"
}
]
},
"VkVideoDecodeH265SessionParametersCreateInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h265)": [
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersCreateInfoEXT-pParametersAddInfo-parameter",
"text": " If pParametersAddInfo
is not NULL
, pParametersAddInfo
must be a valid pointer to a valid VkVideoDecodeH265SessionParametersAddInfoEXT structure"
}
]
},
"VkVideoDecodeH265SessionParametersAddInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h265)": [
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-stdVPSCount-04829",
"text": " The values of stdVPSCount
, stdSPSCount
and stdPPSCount
must be less than or equal to the values of maxStdVPSCount
, maxStdSPSCount
and maxStdPPSCount
, respectively"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-maxStdVPSCount-04830",
"text": " When the maxStdVPSCount
number of parameters of type StdVideoH265VideoParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-maxStdSPSCount-04831",
"text": " When the maxStdSPSCount
number of parameters of type StdVideoH265SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-maxStdPPSCount-04832",
"text": " When the maxStdPPSCount
number of parameters of type StdVideoH265PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-None-04833",
"text": " Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, VPS-SPS-PPS IDs"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-None-04834",
"text": " Parameter entries that already exist in Video Session Parameters object with a particular VPS-SPS-PPS IDs cannot be replaced nor updated"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-None-04835",
"text": " When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same VPS-SPS-PPS IDs as the ones from the template take precedence"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-None-04836",
"text": " VPS/SPS/PPS parameters must comply with the limits specified in VkVideoSessionCreateInfoKHR during Video Session creation"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-pStdVPSs-parameter",
"text": " If stdVPSCount
is not 0
, pStdVPSs
must be a valid pointer to an array of stdVPSCount
StdVideoH265VideoParameterSet
values"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-pStdSPSs-parameter",
"text": " If stdSPSCount
is not 0
, pStdSPSs
must be a valid pointer to an array of stdSPSCount
StdVideoH265SequenceParameterSet
values"
},
{
"vuid": "VUID-VkVideoDecodeH265SessionParametersAddInfoEXT-pStdPPSs-parameter",
"text": " If stdPPSCount
is not 0
, pStdPPSs
must be a valid pointer to an array of stdPPSCount
StdVideoH265PictureParameterSet
values"
}
]
},
"VkVideoDecodeH265PictureInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h265)": [
{
"vuid": "VUID-VkVideoDecodeH265PictureInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH265PictureInfoEXT-pStdPictureInfo-parameter",
"text": " pStdPictureInfo
must be a valid pointer to a StdVideoDecodeH265PictureInfo
value"
},
{
"vuid": "VUID-VkVideoDecodeH265PictureInfoEXT-pSliceOffsets-parameter",
"text": " pSliceOffsets
must be a valid pointer to an array of sliceCount
uint32_t
values"
},
{
"vuid": "VUID-VkVideoDecodeH265PictureInfoEXT-sliceCount-arraylength",
"text": " sliceCount
must be greater than 0
"
}
]
},
"VkVideoDecodeH265DpbSlotInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_decode_h265)": [
{
"vuid": "VUID-VkVideoDecodeH265DpbSlotInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoDecodeH265DpbSlotInfoEXT-pStdReferenceInfo-parameter",
"text": " pStdReferenceInfo
must be a valid pointer to a valid StdVideoDecodeH265ReferenceInfo
value"
}
]
},
"VkVideoEncodeCapabilitiesKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkVideoEncodeCapabilitiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR
"
}
]
},
"vkCmdEncodeVideoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEncodeVideoKHR-pEncodeInfo-parameter",
"text": " pEncodeInfo
must be a valid pointer to a valid VkVideoEncodeInfoKHR structure"
},
{
"vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEncodeVideoKHR-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support encode operations"
},
{
"vuid": "VUID-vkCmdEncodeVideoKHR-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdEncodeVideoKHR-videocoding",
"text": " This command must only be called inside of a video coding scope"
},
{
"vuid": "VUID-vkCmdEncodeVideoKHR-bufferlevel",
"text": " commandBuffer
must be a primary VkCommandBuffer
"
}
]
},
"VkVideoEncodeInfoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkVideoEncodeInfoKHR-None-07012",
"text": " The bound video session object must not be in uninitialized state"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-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 VkVideoEncodeH264EmitPictureParametersInfoEXT, VkVideoEncodeH264VclFrameInfoEXT, VkVideoEncodeH265EmitPictureParametersInfoEXT, or VkVideoEncodeH265VclFrameInfoEXT"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-dstBitstreamBuffer-parameter",
"text": " dstBitstreamBuffer
must be a valid VkBuffer handle"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-srcPictureResource-parameter",
"text": " srcPictureResource
must be a valid VkVideoPictureResourceInfoKHR structure"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-pSetupReferenceSlot-parameter",
"text": " If pSetupReferenceSlot
is not NULL
, pSetupReferenceSlot
must be a valid pointer to a valid VkVideoReferenceSlotInfoKHR structure"
},
{
"vuid": "VUID-VkVideoEncodeInfoKHR-pReferenceSlots-parameter",
"text": " If referenceSlotCount
is not 0
, pReferenceSlots
must be a valid pointer to an array of referenceSlotCount
valid VkVideoReferenceSlotInfoKHR structures"
}
]
},
"VkVideoEncodeRateControlInfoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkVideoEncodeRateControlInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR
"
},
{
"vuid": "VUID-VkVideoEncodeRateControlInfoKHR-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkVideoEncodeRateControlInfoKHR-rateControlMode-parameter",
"text": " rateControlMode
must be a valid VkVideoEncodeRateControlModeFlagBitsKHR value"
},
{
"vuid": "VUID-VkVideoEncodeRateControlInfoKHR-pLayerConfigs-parameter",
"text": " pLayerConfigs
must be a valid pointer to an array of layerCount
valid VkVideoEncodeRateControlLayerInfoKHR structures"
},
{
"vuid": "VUID-VkVideoEncodeRateControlInfoKHR-layerCount-arraylength",
"text": " layerCount
must be greater than 0
"
}
]
},
"VkVideoEncodeRateControlLayerInfoKHR": {
"(VK_KHR_video_queue)+(VK_KHR_video_encode_queue)": [
{
"vuid": "VUID-VkVideoEncodeRateControlLayerInfoKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR
"
}
]
},
"VkVideoEncodeH264ProfileInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264ProfileInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT
"
}
]
},
"VkVideoEncodeH264CapabilitiesEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264CapabilitiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT
"
}
]
},
"VkVideoEncodeH264SessionParametersCreateInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersCreateInfoEXT-pParametersAddInfo-parameter",
"text": " If pParametersAddInfo
is not NULL
, pParametersAddInfo
must be a valid pointer to a valid VkVideoEncodeH264SessionParametersAddInfoEXT structure"
}
]
},
"VkVideoEncodeH264SessionParametersAddInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-stdSPSCount-04837",
"text": " The values of stdSPSCount
and stdPPSCount
must be less than or equal to the values of maxStdSPSCount
and maxStdPPSCount
, respectively"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-maxStdSPSCount-04838",
"text": " When the maxStdSPSCount
number of parameters of type StdVideoH264SequenceParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-maxStdPPSCount-04839",
"text": " When the maxStdPPSCount
number of parameters of type StdVideoH264PictureParameterSet in the Video Session Parameters object is reached, no additional parameters of that type can be added to the object. VK_ERROR_TOO_MANY_OBJECTS
will be returned if an attempt is made to add additional data to this object at this point"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-None-04840",
"text": " Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, SPS-PPS IDs"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-None-04841",
"text": " Parameter entries that already exist in Video Session Parameters object with a particular SPS-PPS IDs cannot be replaced nor updated"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-None-04842",
"text": " When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same SPS-PPS IDs as the ones from the template take precedence"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-None-04843",
"text": " SPS/PPS parameters must comply with the limits specified in VkVideoSessionCreateInfoKHR during Video Session creation"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-pStdSPSs-parameter",
"text": " If pStdSPSs
is not NULL
, pStdSPSs
must be a valid pointer to an array of stdSPSCount
StdVideoH264SequenceParameterSet
values"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-pStdPPSs-parameter",
"text": " If pStdPPSs
is not NULL
, pStdPPSs
must be a valid pointer to an array of stdPPSCount
StdVideoH264PictureParameterSet
values"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-stdSPSCount-arraylength",
"text": " stdSPSCount
must be greater than 0
"
},
{
"vuid": "VUID-VkVideoEncodeH264SessionParametersAddInfoEXT-stdPPSCount-arraylength",
"text": " stdPPSCount
must be greater than 0
"
}
]
},
"VkVideoEncodeH264VclFrameInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264VclFrameInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264VclFrameInfoEXT-pReferenceFinalLists-parameter",
"text": " If pReferenceFinalLists
is not NULL
, pReferenceFinalLists
must be a valid pointer to a valid VkVideoEncodeH264ReferenceListsInfoEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH264VclFrameInfoEXT-pNaluSliceEntries-parameter",
"text": " pNaluSliceEntries
must be a valid pointer to an array of naluSliceEntryCount
valid VkVideoEncodeH264NaluSliceInfoEXT structures"
},
{
"vuid": "VUID-VkVideoEncodeH264VclFrameInfoEXT-pCurrentPictureInfo-parameter",
"text": " pCurrentPictureInfo
must be a valid pointer to a valid StdVideoEncodeH264PictureInfo
value"
},
{
"vuid": "VUID-VkVideoEncodeH264VclFrameInfoEXT-naluSliceEntryCount-arraylength",
"text": " naluSliceEntryCount
must be greater than 0
"
}
]
},
"VkVideoEncodeH264NaluSliceInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264NaluSliceInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264NaluSliceInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEncodeH264NaluSliceInfoEXT-pReferenceFinalLists-parameter",
"text": " If pReferenceFinalLists
is not NULL
, pReferenceFinalLists
must be a valid pointer to a valid VkVideoEncodeH264ReferenceListsInfoEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH264NaluSliceInfoEXT-pSliceHeaderStd-parameter",
"text": " pSliceHeaderStd
must be a valid pointer to a valid StdVideoEncodeH264SliceHeader
value"
}
]
},
"VkVideoEncodeH264DpbSlotInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264DpbSlotInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264DpbSlotInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEncodeH264DpbSlotInfoEXT-pStdReferenceInfo-parameter",
"text": " pStdReferenceInfo
must be a valid pointer to a valid StdVideoEncodeH264ReferenceInfo
value"
}
]
},
"VkVideoEncodeH264ReferenceListsInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264ReferenceListsInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264ReferenceListsInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEncodeH264ReferenceListsInfoEXT-pReferenceList0Entries-parameter",
"text": " If referenceList0EntryCount
is not 0
, pReferenceList0Entries
must be a valid pointer to an array of referenceList0EntryCount
valid VkVideoEncodeH264DpbSlotInfoEXT structures"
},
{
"vuid": "VUID-VkVideoEncodeH264ReferenceListsInfoEXT-pReferenceList1Entries-parameter",
"text": " If referenceList1EntryCount
is not 0
, pReferenceList1Entries
must be a valid pointer to an array of referenceList1EntryCount
valid VkVideoEncodeH264DpbSlotInfoEXT structures"
},
{
"vuid": "VUID-VkVideoEncodeH264ReferenceListsInfoEXT-pMemMgmtCtrlOperations-parameter",
"text": " pMemMgmtCtrlOperations
must be a valid pointer to a valid StdVideoEncodeH264RefMemMgmtCtrlOperations
value"
}
]
},
"VkVideoEncodeH264EmitPictureParametersInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264EmitPictureParametersInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264EmitPictureParametersInfoEXT-ppsIdEntries-parameter",
"text": " ppsIdEntries
must be a valid pointer to an array of ppsIdEntryCount
uint8_t
values"
},
{
"vuid": "VUID-VkVideoEncodeH264EmitPictureParametersInfoEXT-ppsIdEntryCount-arraylength",
"text": " ppsIdEntryCount
must be greater than 0
"
}
]
},
"VkVideoEncodeH264RateControlInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264RateControlInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlInfoEXT-rateControlStructure-parameter",
"text": " rateControlStructure
must be a valid VkVideoEncodeH264RateControlStructureEXT value"
}
]
},
"VkVideoEncodeH264RateControlLayerInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h264)": [
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-rateControlMode-06474",
"text": " When VkVideoEncodeRateControlInfoKHR::rateControlMode
is VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR
, both useMinQp
and useMaxQp
must be set to VK_TRUE
."
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-rateControlMode-06475",
"text": " When VkVideoEncodeRateControlInfoKHR::rateControlMode
is VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR
, the values provided in minQP
must be identical to those provided in maxQp
."
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-initialRcQp-parameter",
"text": " initialRcQp
must be a valid VkVideoEncodeH264QpEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-minQp-parameter",
"text": " minQp
must be a valid VkVideoEncodeH264QpEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-maxQp-parameter",
"text": " maxQp
must be a valid VkVideoEncodeH264QpEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH264RateControlLayerInfoEXT-maxFrameSize-parameter",
"text": " maxFrameSize
must be a valid VkVideoEncodeH264FrameSizeEXT structure"
}
]
},
"VkVideoEncodeH265ProfileInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265ProfileInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT
"
}
]
},
"VkVideoEncodeH265CapabilitiesEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265CapabilitiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT
"
}
]
},
"VkVideoEncodeH265SessionParametersCreateInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersCreateInfoEXT-pParametersAddInfo-parameter",
"text": " If pParametersAddInfo
is not NULL
, pParametersAddInfo
must be a valid pointer to a valid VkVideoEncodeH265SessionParametersAddInfoEXT structure"
}
]
},
"VkVideoEncodeH265SessionParametersAddInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pStdVPSs-parameter",
"text": " If pStdVPSs
is not NULL
, pStdVPSs
must be a valid pointer to an array of stdVPSCount
StdVideoH265VideoParameterSet
values"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pStdSPSs-parameter",
"text": " If pStdSPSs
is not NULL
, pStdSPSs
must be a valid pointer to an array of stdSPSCount
StdVideoH265SequenceParameterSet
values"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pStdPPSs-parameter",
"text": " If pStdPPSs
is not NULL
, pStdPPSs
must be a valid pointer to an array of stdPPSCount
StdVideoH265PictureParameterSet
values"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-stdVPSCount-arraylength",
"text": " stdVPSCount
must be greater than 0
"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-stdSPSCount-arraylength",
"text": " stdSPSCount
must be greater than 0
"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-stdPPSCount-arraylength",
"text": " stdPPSCount
must be greater than 0
"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-stdVPSCount-06438",
"text": " The values of stdVPSCount
, stdSPSCount
and stdPPSCount
must be less than or equal to the values of VkVideoEncodeH265SessionParametersCreateInfoEXT::maxStdVPSCount
, VkVideoEncodeH265SessionParametersCreateInfoEXT:maxStdSPSCount
, and VkVideoEncodeH265SessionParametersCreateInfoEXT:maxStdPPSCount
, respectively"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pStdVPSs-06439",
"text": " Each StdVideoH265VideoParameterSet
entry in pStdVPSs
must have a unique H.265 VPS ID"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pStdSPSs-06440",
"text": " Each StdVideoH265SequenceParameterSet
entry in pStdSPSs
must have a unique H.265 VPS-SPS ID pair"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pStdPPSs-06441",
"text": " Each StdVideoH265PictureParameterSet
entry in pStdPPSs
must have a unique H.265 VPS-SPS-PPS ID tuple"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06442",
"text": " Each entry to be added must have a unique, to the rest of the parameter array entries and the existing parameters in the Video Session Parameters Object that is being updated, VPS-SPS-PPS IDs"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06443",
"text": " Parameter entries that already exist in Video Session Parameters object with a particular VPS-SPS-PPS IDs must not be replaced nor updated"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06444",
"text": " When creating a new object using a Video Session Parameters as a template, the array’s parameters with the same VPS-SPS-PPS IDs as the ones from the template take precedence"
},
{
"vuid": "VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06445",
"text": " VPS/SPS/PPS parameters must comply with the limits specified in VkVideoSessionCreateInfoKHR during Video Session creation"
}
]
},
"VkVideoEncodeH265VclFrameInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265VclFrameInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265VclFrameInfoEXT-pReferenceFinalLists-parameter",
"text": " If pReferenceFinalLists
is not NULL
, pReferenceFinalLists
must be a valid pointer to a valid VkVideoEncodeH265ReferenceListsInfoEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH265VclFrameInfoEXT-pNaluSliceSegmentEntries-parameter",
"text": " pNaluSliceSegmentEntries
must be a valid pointer to an array of naluSliceSegmentEntryCount
valid VkVideoEncodeH265NaluSliceSegmentInfoEXT structures"
},
{
"vuid": "VUID-VkVideoEncodeH265VclFrameInfoEXT-pCurrentPictureInfo-parameter",
"text": " pCurrentPictureInfo
must be a valid pointer to a valid StdVideoEncodeH265PictureInfo
value"
},
{
"vuid": "VUID-VkVideoEncodeH265VclFrameInfoEXT-naluSliceSegmentEntryCount-arraylength",
"text": " naluSliceSegmentEntryCount
must be greater than 0
"
}
]
},
"VkVideoEncodeH265NaluSliceSegmentInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoEXT-pReferenceFinalLists-parameter",
"text": " If pReferenceFinalLists
is not NULL
, pReferenceFinalLists
must be a valid pointer to a valid VkVideoEncodeH265ReferenceListsInfoEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH265NaluSliceSegmentInfoEXT-pSliceSegmentHeaderStd-parameter",
"text": " pSliceSegmentHeaderStd
must be a valid pointer to a valid StdVideoEncodeH265SliceSegmentHeader
value"
}
]
},
"VkVideoEncodeH265DpbSlotInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265DpbSlotInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265DpbSlotInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEncodeH265DpbSlotInfoEXT-pStdReferenceInfo-parameter",
"text": " pStdReferenceInfo
must be a valid pointer to a valid StdVideoEncodeH265ReferenceInfo
value"
}
]
},
"VkVideoEncodeH265ReferenceListsInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265ReferenceListsInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265ReferenceListsInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkVideoEncodeH265ReferenceListsInfoEXT-pReferenceList0Entries-parameter",
"text": " If referenceList0EntryCount
is not 0
, pReferenceList0Entries
must be a valid pointer to an array of referenceList0EntryCount
valid VkVideoEncodeH265DpbSlotInfoEXT structures"
},
{
"vuid": "VUID-VkVideoEncodeH265ReferenceListsInfoEXT-pReferenceList1Entries-parameter",
"text": " If referenceList1EntryCount
is not 0
, pReferenceList1Entries
must be a valid pointer to an array of referenceList1EntryCount
valid VkVideoEncodeH265DpbSlotInfoEXT structures"
},
{
"vuid": "VUID-VkVideoEncodeH265ReferenceListsInfoEXT-pReferenceModifications-parameter",
"text": " pReferenceModifications
must be a valid pointer to a valid StdVideoEncodeH265ReferenceModifications
value"
}
]
},
"VkVideoEncodeH265EmitPictureParametersInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265EmitPictureParametersInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265EmitPictureParametersInfoEXT-ppsIdEntries-parameter",
"text": " If ppsIdEntryCount
is not 0
, ppsIdEntries
must be a valid pointer to an array of ppsIdEntryCount
uint8_t
values"
}
]
},
"VkVideoEncodeH265RateControlInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265RateControlInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlInfoEXT-rateControlStructure-parameter",
"text": " rateControlStructure
must be a valid VkVideoEncodeH265RateControlStructureEXT value"
}
]
},
"VkVideoEncodeH265RateControlLayerInfoEXT": {
"(VK_KHR_video_queue)+(VK_EXT_video_encode_h265)": [
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-rateControlMode-06476",
"text": " When VkVideoEncodeRateControlInfoKHR::rateControlMode
is VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR
, both useMinQp
and useMaxQp
must be set to VK_TRUE
."
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-rateControlMode-06477",
"text": " When VkVideoEncodeRateControlInfoKHR::rateControlMode
is VK_VIDEO_ENCODE_RATE_CONTROL_MODE_NONE_BIT_KHR
, the values provided in minQP
must be identical to those provided in maxQp
."
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT
"
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-initialRcQp-parameter",
"text": " initialRcQp
must be a valid VkVideoEncodeH265QpEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-minQp-parameter",
"text": " minQp
must be a valid VkVideoEncodeH265QpEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-maxQp-parameter",
"text": " maxQp
must be a valid VkVideoEncodeH265QpEXT structure"
},
{
"vuid": "VUID-VkVideoEncodeH265RateControlLayerInfoEXT-maxFrameSize-parameter",
"text": " maxFrameSize
must be a valid VkVideoEncodeH265FrameSizeEXT structure"
}
]
},
"vkGetPhysicalDeviceOpticalFlowImageFormatsNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-pOpticalFlowImageFormatInfo-parameter",
"text": " pOpticalFlowImageFormatInfo
must be a valid pointer to a valid VkOpticalFlowImageFormatInfoNV structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-pFormatCount-parameter",
"text": " pFormatCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-pImageFormatProperties-parameter",
"text": " If the value referenced by pFormatCount
is not 0
, and pImageFormatProperties
is not NULL
, pImageFormatProperties
must be a valid pointer to an array of pFormatCount
VkOpticalFlowImageFormatPropertiesNV structures"
}
]
},
"VkOpticalFlowImageFormatInfoNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkOpticalFlowImageFormatInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV
"
},
{
"vuid": "VUID-VkOpticalFlowImageFormatInfoNV-usage-parameter",
"text": " usage
must be a valid combination of VkOpticalFlowUsageFlagBitsNV values"
},
{
"vuid": "VUID-VkOpticalFlowImageFormatInfoNV-usage-requiredbitmask",
"text": " usage
must not be 0
"
}
]
},
"VkOpticalFlowImageFormatPropertiesNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkOpticalFlowImageFormatPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV
"
},
{
"vuid": "VUID-VkOpticalFlowImageFormatPropertiesNV-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkCreateOpticalFlowSessionNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-vkCreateOpticalFlowSessionNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateOpticalFlowSessionNV-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkOpticalFlowSessionCreateInfoNV structure"
},
{
"vuid": "VUID-vkCreateOpticalFlowSessionNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateOpticalFlowSessionNV-pSession-parameter",
"text": " pSession
must be a valid pointer to a VkOpticalFlowSessionNV handle"
}
]
},
"VkOpticalFlowSessionCreateInfoNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-width-07581",
"text": " width
must be greater than or equal to VkPhysicalDeviceOpticalFlowPropertiesNV
::minWidth
and less than or equal to VkPhysicalDeviceOpticalFlowPropertiesNV
::maxWidth
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-height-07582",
"text": " height
must be greater than or equal to VkPhysicalDeviceOpticalFlowPropertiesNV
::minHeight
and less than or equal to VkPhysicalDeviceOpticalFlowPropertiesNV
::maxHeight
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-imageFormat-07583",
"text": " imageFormat
must be one of the formats returned by vkGetPhysicalDeviceOpticalFlowImageFormatsNV for VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flowVectorFormat-07584",
"text": " flowVectorFormat
must be one of the formats returned by vkGetPhysicalDeviceOpticalFlowImageFormatsNV for VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-costFormat-07585",
"text": " costFormat
must be one of the formats returned by vkGetPhysicalDeviceOpticalFlowImageFormatsNV for VK_OPTICAL_FLOW_USAGE_COST_BIT_NV
if VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV
is set in flags
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-outputGridSize-07586",
"text": " outputGridSize
must be exactly one of the bits reported in VkPhysicalDeviceOpticalFlowPropertiesNV
::supportedOutputGridSizes
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-hintGridSize-07587",
"text": " hintGridSize
must be exactly one of the bits reported in VkPhysicalDeviceOpticalFlowPropertiesNV
::supportedHintGridSizes
if VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV
is set in flags
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07588",
"text": " VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV
must not be set in flags
if VkPhysicalDeviceOpticalFlowPropertiesNV
::hintSupported
is VK_FALSE
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07589",
"text": " VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV
must not be set in flags
if VkPhysicalDeviceOpticalFlowPropertiesNV
::costSupported
is VK_FALSE
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07590",
"text": " VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV
must not be set in flags
if VkPhysicalDeviceOpticalFlowPropertiesNV
::globalFlowSupported
is VK_FALSE
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07591",
"text": " VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV
must not be set in flags
if VkPhysicalDeviceOpticalFlowPropertiesNV
::maxNumRegionsOfInterest
is 0."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-07592",
"text": " VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV
must not be set in flags
if VkPhysicalDeviceOpticalFlowPropertiesNV
::bidirectionalFlowSupported
is VK_FALSE
."
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV
"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkOpticalFlowSessionCreatePrivateDataInfoNV"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-imageFormat-parameter",
"text": " imageFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flowVectorFormat-parameter",
"text": " flowVectorFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-costFormat-parameter",
"text": " If costFormat
is not 0
, costFormat
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-outputGridSize-parameter",
"text": " outputGridSize
must be a valid combination of VkOpticalFlowGridSizeFlagBitsNV values"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-outputGridSize-requiredbitmask",
"text": " outputGridSize
must not be 0
"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-hintGridSize-parameter",
"text": " hintGridSize
must be a valid combination of VkOpticalFlowGridSizeFlagBitsNV values"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-performanceLevel-parameter",
"text": " If performanceLevel
is not 0
, performanceLevel
must be a valid VkOpticalFlowPerformanceLevelNV value"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreateInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkOpticalFlowSessionCreateFlagBitsNV values"
}
]
},
"VkOpticalFlowSessionCreatePrivateDataInfoNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkOpticalFlowSessionCreatePrivateDataInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV
"
},
{
"vuid": "VUID-VkOpticalFlowSessionCreatePrivateDataInfoNV-pPrivateData-parameter",
"text": " pPrivateData
must be a pointer value"
}
]
},
"vkDestroyOpticalFlowSessionNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-vkDestroyOpticalFlowSessionNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyOpticalFlowSessionNV-session-parameter",
"text": " session
must be a valid VkOpticalFlowSessionNV handle"
},
{
"vuid": "VUID-vkDestroyOpticalFlowSessionNV-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyOpticalFlowSessionNV-session-parent",
"text": " session
must have been created, allocated, or retrieved from device
"
}
]
},
"vkBindOpticalFlowSessionImageNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-session-parameter",
"text": " session
must be a valid VkOpticalFlowSessionNV handle"
},
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-bindingPoint-parameter",
"text": " bindingPoint
must be a valid VkOpticalFlowSessionBindingPointNV value"
},
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-view-parameter",
"text": " If view
is not VK_NULL_HANDLE, view
must be a valid VkImageView handle"
},
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-layout-parameter",
"text": " layout
must be a valid VkImageLayout value"
},
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-session-parent",
"text": " session
must have been created, allocated, or retrieved from device
"
},
{
"vuid": "VUID-vkBindOpticalFlowSessionImageNV-view-parent",
"text": " If view
is a valid handle, it must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdOpticalFlowExecuteNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-session-parameter",
"text": " session
must be a valid VkOpticalFlowSessionNV handle"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-pExecuteInfo-parameter",
"text": " pExecuteInfo
must be a valid pointer to a valid VkOpticalFlowExecuteInfoNV structure"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support opticalflow operations"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-renderpass",
"text": " This command must only be called outside of a render pass instance"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
},
{
"vuid": "VUID-vkCmdOpticalFlowExecuteNV-commonparent",
"text": " Both of commandBuffer
, and session
must have been created, allocated, or retrieved from the same VkDevice"
}
]
},
"VkOpticalFlowExecuteInfoNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkOpticalFlowExecuteInfoNV-regionCount-07593",
"text": " regionCount
must be 0 if VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV
was not set for VkOpticalFlowSessionNV
on which this command is operating."
},
{
"vuid": "VUID-VkOpticalFlowExecuteInfoNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV
"
},
{
"vuid": "VUID-VkOpticalFlowExecuteInfoNV-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkOpticalFlowExecuteInfoNV-flags-parameter",
"text": " flags
must be a valid combination of VkOpticalFlowExecuteFlagBitsNV values"
},
{
"vuid": "VUID-VkOpticalFlowExecuteInfoNV-pRegions-parameter",
"text": " If regionCount
is not 0
, pRegions
must be a valid pointer to an array of regionCount
VkRect2D structures"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceVulkan11Features": {
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkan11Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES
"
}
]
},
"VkPhysicalDeviceVulkan12Features": {
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkan12Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES
"
}
]
},
"VkPhysicalDeviceVulkan13Features": {
"(VK_VERSION_1_3)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkan13Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES
"
}
]
},
"VkPhysicalDeviceVariablePointersFeatures": {
"(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
{
"vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431",
"text": " If variablePointers
is enabled then variablePointersStorageBuffer
must also be enabled"
},
{
"vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES
"
}
]
},
"VkPhysicalDeviceMultiviewFeatures": {
"(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
"text": " If multiviewGeometryShader
is enabled then multiview
must also be enabled"
},
{
"vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
"text": " If multiviewTessellationShader
is enabled then multiview
must also be enabled"
},
{
"vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderAtomicFloatFeaturesEXT": {
"(VK_EXT_shader_atomic_float)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT": {
"(VK_EXT_shader_atomic_float2)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderAtomicInt64Features": {
"(VK_VERSION_1_2,VK_KHR_shader_atomic_int64)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT": {
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT
"
}
]
},
"VkPhysicalDevice8BitStorageFeatures": {
"(VK_VERSION_1_2,VK_KHR_8bit_storage)": [
{
"vuid": "VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceShaderFloat16Int8Features": {
"(VK_VERSION_1_2,VK_KHR_shader_float16_int8)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderFloat16Int8Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderClockFeaturesKHR": {
"(VK_KHR_shader_clock)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderClockFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
"(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES
"
}
]
},
"VkPhysicalDeviceProtectedMemoryFeatures": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES
"
}
]
},
"VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
"(VK_EXT_blend_operation_advanced)": [
{
"vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
"(VK_EXT_conditional_rendering)": [
{
"vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderDrawParametersFeatures": {
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
"
}
]
},
"VkPhysicalDeviceMeshShaderFeaturesNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceMeshShaderFeaturesEXT": {
"(VK_EXT_mesh_shader)+(VK_VERSION_1_1,VK_KHR_multiview)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-multiviewMeshShader-07032",
"text": " If multiviewMeshShader
is enabled then VkPhysicalDeviceMultiviewFeaturesKHR
::multiview
must also be enabled"
}
],
"(VK_EXT_mesh_shader)+(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-primitiveFragmentShadingRateMeshShader-07033",
"text": " If primitiveFragmentShadingRateMeshShader
is enabled then VkPhysicalDeviceFragmentShadingRateFeaturesKHR
::primitiveFragmentShadingRate
must also be enabled"
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceDescriptorIndexingFeatures": {
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES
"
}
]
},
"VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
"(VK_EXT_vertex_attribute_divisor)": [
{
"vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceASTCDecodeFeaturesEXT": {
"(VK_EXT_astc_decode_mode)": [
{
"vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceVulkanMemoryModelFeatures": {
"(VK_VERSION_1_2,VK_KHR_vulkan_memory_model)": [
{
"vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES
"
}
]
},
"VkPhysicalDeviceInlineUniformBlockFeatures": {
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES
"
}
]
},
"VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
"(VK_NV_representative_fragment_test)": [
{
"vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceExclusiveScissorFeaturesNV": {
"(VK_NV_scissor_exclusive)": [
{
"vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceCornerSampledImageFeaturesNV": {
"(VK_NV_corner_sampled_image)": [
{
"vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
"(VK_NV_compute_shader_derivatives)": [
{
"vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR": {
"(VK_KHR_fragment_shader_barycentric)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
"(VK_NV_shader_image_footprint)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceShadingRateImageFeaturesNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentDensityMap2FeaturesEXT": {
"(VK_EXT_fragment_density_map)+(VK_EXT_fragment_density_map2)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM": {
"(VK_EXT_fragment_density_map)+(VK_QCOM_fragment_density_map_offset)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM
"
}
]
},
"VkPhysicalDeviceInvocationMaskFeaturesHUAWEI": {
"(VK_HUAWEI_invocation_mask)": [
{
"vuid": "VUID-VkPhysicalDeviceInvocationMaskFeaturesHUAWEI-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI
"
}
]
},
"VkPhysicalDeviceScalarBlockLayoutFeatures": {
"(VK_VERSION_1_2,VK_EXT_scalar_block_layout)": [
{
"vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES
"
}
]
},
"VkPhysicalDeviceUniformBufferStandardLayoutFeatures": {
"(VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout)": [
{
"vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES
"
}
]
},
"VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
"(VK_EXT_depth_clip_enable)": [
{
"vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
"(VK_EXT_memory_priority)": [
{
"vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceBufferDeviceAddressFeatures": {
"(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES
"
}
]
},
"VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": {
"(VK_EXT_buffer_device_address)": [
{
"vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
"(VK_NV_dedicated_allocation_image_aliasing)": [
{
"vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceImagelessFramebufferFeatures": {
"(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [
{
"vuid": "VUID-VkPhysicalDeviceImagelessFramebufferFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES
"
}
]
},
"VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": {
"(VK_EXT_fragment_shader_interlock)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
"(VK_EXT_ycbcr_image_arrays)": [
{
"vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": {
"(VK_VERSION_1_1)+(VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES
"
}
]
},
"VkPhysicalDeviceHostQueryResetFeatures": {
"(VK_VERSION_1_2,VK_EXT_host_query_reset)": [
{
"vuid": "VUID-VkPhysicalDeviceHostQueryResetFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL": {
"(VK_INTEL_shader_integer_functions2)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL
"
}
]
},
"VkPhysicalDeviceCoverageReductionModeFeaturesNV": {
"(VK_NV_coverage_reduction_mode)": [
{
"vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceTimelineSemaphoreFeatures": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES
"
}
]
},
"VkPhysicalDeviceIndexTypeUint8FeaturesEXT": {
"(VK_EXT_index_type_uint8)": [
{
"vuid": "VUID-VkPhysicalDeviceIndexTypeUint8FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT": {
"(VK_EXT_primitive_topology_list_restart)": [
{
"vuid": "VUID-VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures": {
"(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [
{
"vuid": "VUID-VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES
"
}
]
},
"VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR": {
"(VK_KHR_pipeline_executable_properties)": [
{
"vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures": {
"(VK_VERSION_1_3,VK_EXT_shader_demote_to_helper_invocation)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES
"
}
]
},
"VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": {
"(VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceTextureCompressionASTCHDRFeatures": {
"(VK_VERSION_1_3,VK_EXT_texture_compression_astc_hdr)": [
{
"vuid": "VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES
"
}
]
},
"VkPhysicalDeviceLineRasterizationFeaturesEXT": {
"(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-VkPhysicalDeviceLineRasterizationFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceSubgroupSizeControlFeatures": {
"(VK_VERSION_1_3,VK_EXT_subgroup_size_control)": [
{
"vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES
"
}
]
},
"VkPhysicalDeviceCoherentMemoryFeaturesAMD": {
"(VK_AMD_device_coherent_memory)": [
{
"vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD
"
}
]
},
"VkPhysicalDeviceAccelerationStructureFeaturesKHR": {
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkPhysicalDeviceAccelerationStructureFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceRayTracingPipelineFeaturesKHR": {
"(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-rayTracingPipelineShaderGroupHandleCaptureReplayMixed-03575",
"text": " If rayTracingPipelineShaderGroupHandleCaptureReplayMixed
is VK_TRUE
, rayTracingPipelineShaderGroupHandleCaptureReplay
must also be VK_TRUE
"
},
{
"vuid": "VUID-VkPhysicalDeviceRayTracingPipelineFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceRayQueryFeaturesKHR": {
"(VK_KHR_ray_query)": [
{
"vuid": "VUID-VkPhysicalDeviceRayQueryFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR": {
"(VK_KHR_ray_tracing_maintenance1)": [
{
"vuid": "VUID-VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": {
"(VK_EXT_extended_dynamic_state)": [
{
"vuid": "VUID-VkPhysicalDeviceExtendedDynamicStateFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceExtendedDynamicState2FeaturesEXT": {
"(VK_EXT_extended_dynamic_state2)": [
{
"vuid": "VUID-VkPhysicalDeviceExtendedDynamicState2FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceExtendedDynamicState3FeaturesEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkPhysicalDeviceExtendedDynamicState3FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceDiagnosticsConfigFeaturesNV": {
"(VK_NV_device_diagnostics_config)": [
{
"vuid": "VUID-VkPhysicalDeviceDiagnosticsConfigFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceDeviceMemoryReportFeaturesEXT": {
"(VK_EXT_device_memory_report)": [
{
"vuid": "VUID-VkPhysicalDeviceDeviceMemoryReportFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR": {
"(VK_EXT_global_priority_query,VK_KHR_global_priority)": [
{
"vuid": "VUID-VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR
"
}
]
},
"VkPhysicalDevicePipelineCreationCacheControlFeatures": {
"(VK_VERSION_1_3,VK_EXT_pipeline_creation_cache_control)": [
{
"vuid": "VUID-VkPhysicalDevicePipelineCreationCacheControlFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES
"
}
]
},
"VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures": {
"(VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory)": [
{
"vuid": "VUID-VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES
"
}
]
},
"VkPhysicalDevicePrivateDataFeatures": {
"(VK_VERSION_1_3,VK_EXT_private_data)": [
{
"vuid": "VUID-VkPhysicalDevicePrivateDataFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR": {
"(VK_KHR_shader_subgroup_uniform_control_flow)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceRobustness2FeaturesEXT": {
"(VK_EXT_robustness2)": [
{
"vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000",
"text": " If robustBufferAccess2
is enabled then robustBufferAccess
must also be enabled"
},
{
"vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceImageRobustnessFeatures": {
"(VK_VERSION_1_3,VK_EXT_image_robustness)": [
{
"vuid": "VUID-VkPhysicalDeviceImageRobustnessFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES
"
}
]
},
"VkPhysicalDeviceShaderTerminateInvocationFeatures": {
"(VK_VERSION_1_3,VK_KHR_shader_terminate_invocation)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderTerminateInvocationFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES
"
}
]
},
"VkPhysicalDeviceCustomBorderColorFeaturesEXT": {
"(VK_EXT_custom_border_color)": [
{
"vuid": "VUID-VkPhysicalDeviceCustomBorderColorFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceBorderColorSwizzleFeaturesEXT": {
"(VK_EXT_border_color_swizzle)": [
{
"vuid": "VUID-VkPhysicalDeviceBorderColorSwizzleFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePortabilitySubsetFeaturesKHR": {
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkPhysicalDevicePortabilitySubsetFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR
"
}
]
},
"VkPhysicalDevicePerformanceQueryFeaturesKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPhysicalDevicePerformanceQueryFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR
"
}
]
},
"VkPhysicalDevice4444FormatsFeaturesEXT": {
"(VK_EXT_4444_formats)": [
{
"vuid": "VUID-VkPhysicalDevice4444FormatsFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT": {
"(VK_EXT_mutable_descriptor_type,VK_VALVE_mutable_descriptor_type)": [
{
"vuid": "VUID-VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceDepthClipControlFeaturesEXT": {
"(VK_EXT_depth_clip_control)": [
{
"vuid": "VUID-VkPhysicalDeviceDepthClipControlFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR": {
"(VK_KHR_workgroup_memory_explicit_layout)": [
{
"vuid": "VUID-VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceSynchronization2Features": {
"(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkPhysicalDeviceSynchronization2Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES
"
}
]
},
"VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT": {
"(VK_EXT_vertex_input_dynamic_state)": [
{
"vuid": "VUID-VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT": {
"(VK_EXT_primitives_generated_query)": [
{
"vuid": "VUID-VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentShadingRateFeaturesKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRateFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR
"
}
]
},
"VkPhysicalDeviceLegacyDitheringFeaturesEXT": {
"(VK_EXT_legacy_dithering)": [
{
"vuid": "VUID-VkPhysicalDeviceLegacyDitheringFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV": {
"(VK_NV_fragment_shading_rate_enums)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceInheritedViewportScissorFeaturesNV": {
"(VK_NV_inherited_viewport_scissor)": [
{
"vuid": "VUID-VkPhysicalDeviceInheritedViewportScissorFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV
"
}
]
},
"VkPhysicalDevicePipelineProtectedAccessFeaturesEXT": {
"(VK_EXT_pipeline_protected_access)": [
{
"vuid": "VUID-VkPhysicalDevicePipelineProtectedAccessFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT": {
"(VK_EXT_ycbcr_2plane_444_formats)": [
{
"vuid": "VUID-VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceColorWriteEnableFeaturesEXT": {
"(VK_EXT_color_write_enable)": [
{
"vuid": "VUID-VkPhysicalDeviceColorWriteEnableFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePipelinePropertiesFeaturesEXT": {
"(VK_EXT_pipeline_properties)": [
{
"vuid": "VUID-VkPhysicalDevicePipelinePropertiesFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceProvokingVertexFeaturesEXT": {
"(VK_EXT_provoking_vertex)": [
{
"vuid": "VUID-VkPhysicalDeviceProvokingVertexFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT": {
"(VK_EXT_pageable_device_local_memory)": [
{
"vuid": "VUID-VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceMultiDrawFeaturesEXT": {
"(VK_EXT_multi_draw)": [
{
"vuid": "VUID-VkPhysicalDeviceMultiDrawFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceRayTracingMotionBlurFeaturesNV": {
"(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-VkPhysicalDeviceRayTracingMotionBlurFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceOpacityMicromapFeaturesEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkPhysicalDeviceOpacityMicromapFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceSubpassShadingFeaturesHUAWEI": {
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkPhysicalDeviceSubpassShadingFeaturesHUAWEI-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI
"
}
]
},
"VkPhysicalDeviceExternalMemoryRDMAFeaturesNV": {
"(VK_NV_external_memory_rdma)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalMemoryRDMAFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV
"
}
]
},
"VkPhysicalDevicePresentIdFeaturesKHR": {
"(VK_KHR_present_id)": [
{
"vuid": "VUID-VkPhysicalDevicePresentIdFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR
"
}
]
},
"VkPhysicalDevicePresentWaitFeaturesKHR": {
"(VK_KHR_present_wait)": [
{
"vuid": "VUID-VkPhysicalDevicePresentWaitFeaturesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR
"
}
]
},
"VkPhysicalDevicePresentBarrierFeaturesNV": {
"(VK_NV_present_barrier)": [
{
"vuid": "VUID-VkPhysicalDevicePresentBarrierFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceShaderIntegerDotProductFeatures": {
"(VK_VERSION_1_3,VK_KHR_shader_integer_dot_product)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderIntegerDotProductFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES
"
}
]
},
"VkPhysicalDeviceMaintenance4Features": {
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-VkPhysicalDeviceMaintenance4Features-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES
"
}
]
},
"VkPhysicalDeviceDynamicRenderingFeatures": {
"(VK_VERSION_1_3,VK_KHR_dynamic_rendering)": [
{
"vuid": "VUID-VkPhysicalDeviceDynamicRenderingFeatures-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES
"
}
]
},
"VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT": {
"(VK_EXT_rgba10x6_formats)": [
{
"vuid": "VUID-VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT
"
}
]
},
"VkPhysicalDevicePipelineRobustnessFeaturesEXT": {
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-VkPhysicalDevicePipelineRobustnessFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceImageViewMinLodFeaturesEXT": {
"(VK_EXT_image_view_min_lod)": [
{
"vuid": "VUID-VkPhysicalDeviceImageViewMinLodFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT": {
"(VK_EXT_rasterization_order_attachment_access)": [
{
"vuid": "VUID-VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT": {
"(VK_EXT_subpass_merge_feedback)": [
{
"vuid": "VUID-VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceLinearColorAttachmentFeaturesNV": {
"(VK_NV_linear_color_attachment)": [
{
"vuid": "VUID-VkPhysicalDeviceLinearColorAttachmentFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT": {
"(VK_EXT_attachment_feedback_loop_layout)": [
{
"vuid": "VUID-VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT": {
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT": {
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceImage2DViewOf3DFeaturesEXT": {
"(VK_EXT_image_2d_view_of_3d)": [
{
"vuid": "VUID-VkPhysicalDeviceImage2DViewOf3DFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceImageCompressionControlFeaturesEXT": {
"(VK_EXT_image_compression_control)": [
{
"vuid": "VUID-VkPhysicalDeviceImageCompressionControlFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT": {
"(VK_EXT_image_compression_control)+(VK_EXT_image_compression_control_swapchain)": [
{
"vuid": "VUID-VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD": {
"(VK_AMD_shader_early_and_late_fragment_tests)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD
"
}
]
},
"VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT": {
"(VK_EXT_non_seamless_cube_map)": [
{
"vuid": "VUID-VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT": {
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceTilePropertiesFeaturesQCOM": {
"(VK_QCOM_tile_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceTilePropertiesFeaturesQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM
"
}
]
},
"VkPhysicalDeviceImageProcessingFeaturesQCOM": {
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-VkPhysicalDeviceImageProcessingFeaturesQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM
"
}
]
},
"VkPhysicalDeviceDepthClampZeroOneFeaturesEXT": {
"(VK_EXT_depth_clamp_zero_one)": [
{
"vuid": "VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceAddressBindingReportFeaturesEXT": {
"(VK_EXT_device_address_binding_report)": [
{
"vuid": "VUID-VkPhysicalDeviceAddressBindingReportFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceOpticalFlowFeaturesNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkPhysicalDeviceOpticalFlowFeaturesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV
"
}
]
},
"VkPhysicalDeviceFaultFeaturesEXT": {
"(VK_EXT_device_fault)": [
{
"vuid": "VUID-VkPhysicalDeviceFaultFeaturesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT
"
}
]
},
"VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceFloatControlsProperties": {
"(VK_VERSION_1_2,VK_KHR_shader_float_controls)": [
{
"vuid": "VUID-VkPhysicalDeviceFloatControlsProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_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
"
}
]
},
"VkPhysicalDeviceSubgroupSizeControlProperties": {
"(VK_VERSION_1_1)+(VK_VERSION_1_3,VK_EXT_subgroup_size_control)": [
{
"vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_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
"
}
]
},
"VkPhysicalDeviceSamplerFilterMinmaxProperties": {
"(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [
{
"vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES
"
}
]
},
"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
"
}
]
},
"VkPhysicalDeviceMaintenance4Properties": {
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-VkPhysicalDeviceMaintenance4Properties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES
"
}
]
},
"VkPhysicalDeviceMeshShaderPropertiesNV": {
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceMeshShaderPropertiesEXT": {
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceDescriptorIndexingProperties": {
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES
"
}
]
},
"VkPhysicalDeviceInlineUniformBlockProperties": {
"(VK_VERSION_1_3,VK_EXT_inline_uniform_block)": [
{
"vuid": "VUID-VkPhysicalDeviceInlineUniformBlockProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES
"
}
]
},
"VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
"(VK_EXT_conservative_rasterization)": [
{
"vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
"(VK_EXT_fragment_density_map)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentDensityMap2PropertiesEXT": {
"(VK_EXT_fragment_density_map)+(VK_EXT_fragment_density_map2)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2PropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM": {
"(VK_EXT_fragment_density_map)+(VK_QCOM_fragment_density_map_offset)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM
"
}
]
},
"VkPhysicalDeviceShaderCorePropertiesAMD": {
"(VK_AMD_shader_core_properties)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD
"
}
]
},
"VkPhysicalDeviceShaderCoreProperties2AMD": {
"(VK_AMD_shader_core_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD
"
}
]
},
"VkPhysicalDeviceDepthStencilResolveProperties": {
"(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [
{
"vuid": "VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES
"
}
]
},
"VkPhysicalDevicePerformanceQueryPropertiesKHR": {
"(VK_KHR_performance_query)": [
{
"vuid": "VUID-VkPhysicalDevicePerformanceQueryPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceShadingRateImagePropertiesNV": {
"(VK_NV_shading_rate_image)": [
{
"vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceRayTracingPropertiesNV": {
"(VK_NV_ray_tracing)": [
{
"vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceAccelerationStructurePropertiesKHR": {
"(VK_KHR_acceleration_structure)": [
{
"vuid": "VUID-VkPhysicalDeviceAccelerationStructurePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceRayTracingPipelinePropertiesKHR": {
"(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-VkPhysicalDeviceRayTracingPipelinePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": {
"(VK_NV_shader_sm_builtins)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceTexelBufferAlignmentProperties": {
"(VK_VERSION_1_3,VK_EXT_texel_buffer_alignment)": [
{
"vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES
"
}
]
},
"VkPhysicalDeviceTimelineSemaphoreProperties": {
"(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [
{
"vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES
"
}
]
},
"VkPhysicalDeviceLineRasterizationPropertiesEXT": {
"(VK_EXT_line_rasterization)": [
{
"vuid": "VUID-VkPhysicalDeviceLineRasterizationPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceRobustness2PropertiesEXT": {
"(VK_EXT_robustness2)": [
{
"vuid": "VUID-VkPhysicalDeviceRobustness2PropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV": {
"(VK_NV_device_generated_commands)": [
{
"vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV
"
}
]
},
"VkPhysicalDevicePortabilitySubsetPropertiesKHR": {
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-VkPhysicalDevicePortabilitySubsetPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceFragmentShadingRatePropertiesKHR": {
"(VK_KHR_fragment_shading_rate)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRatePropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV": {
"(VK_NV_fragment_shading_rate_enums)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV
"
},
{
"vuid": "VUID-VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV-maxFragmentShadingRateInvocationCount-parameter",
"text": " maxFragmentShadingRateInvocationCount
must be a valid VkSampleCountFlagBits value"
}
]
},
"VkPhysicalDeviceCustomBorderColorPropertiesEXT": {
"(VK_EXT_custom_border_color)": [
{
"vuid": "VUID-VkPhysicalDeviceCustomBorderColorPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceProvokingVertexPropertiesEXT": {
"(VK_EXT_provoking_vertex)": [
{
"vuid": "VUID-VkPhysicalDeviceProvokingVertexPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceSubpassShadingPropertiesHUAWEI": {
"(VK_HUAWEI_subpass_shading)": [
{
"vuid": "VUID-VkPhysicalDeviceSubpassShadingPropertiesHUAWEI-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI
"
}
]
},
"VkPhysicalDeviceMultiDrawPropertiesEXT": {
"(VK_EXT_multi_draw)": [
{
"vuid": "VUID-VkPhysicalDeviceMultiDrawPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT": {
"(VK_EXT_graphics_pipeline_library)": [
{
"vuid": "VUID-VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR": {
"(VK_KHR_fragment_shader_barycentric)": [
{
"vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR
"
}
]
},
"VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT": {
"(VK_EXT_shader_module_identifier)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDevicePipelineRobustnessPropertiesEXT": {
"(VK_EXT_pipeline_robustness)": [
{
"vuid": "VUID-VkPhysicalDevicePipelineRobustnessPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceExtendedDynamicState3PropertiesEXT": {
"(VK_EXT_extended_dynamic_state3)": [
{
"vuid": "VUID-VkPhysicalDeviceExtendedDynamicState3PropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceOpticalFlowPropertiesNV": {
"(VK_NV_optical_flow)": [
{
"vuid": "VUID-VkPhysicalDeviceOpticalFlowPropertiesNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV
"
}
]
},
"VkPhysicalDeviceOpacityMicromapPropertiesEXT": {
"(VK_EXT_opacity_micromap)": [
{
"vuid": "VUID-VkPhysicalDeviceOpacityMicromapPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT
"
}
]
},
"VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM": {
"(VK_ARM_shader_core_builtins)": [
{
"vuid": "VUID-VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM
"
}
]
},
"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": " 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 VkDrmFormatModifierPropertiesList2EXT, VkDrmFormatModifierPropertiesListEXT, VkFormatProperties3, or VkSubpassResolvePerformanceQueryEXT"
},
{
"vuid": "VUID-VkFormatProperties2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkDrmFormatModifierPropertiesListEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT
"
}
]
},
"VkDrmFormatModifierPropertiesList2EXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-VkDrmFormatModifierPropertiesList2EXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT
"
}
]
},
"VkFormatProperties3": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-VkFormatProperties3-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3
"
}
]
},
"VkSubpassResolvePerformanceQueryEXT": {
"(VK_EXT_multisampled_render_to_single_sampled)": [
{
"vuid": "VUID-VkSubpassResolvePerformanceQueryEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT
"
}
]
},
"vkGetPhysicalDeviceImageFormatProperties": {
"(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
"text": " tiling
must not be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
. (Use vkGetPhysicalDeviceImageFormatProperties2 instead)"
}
],
"core": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
"text": " pImageFormatProperties
must be a valid pointer to a VkImageFormatProperties structure"
}
]
},
"vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
"(VK_NV_external_memory_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
"text": " externalHandleType
must be a valid combination of VkExternalMemoryHandleTypeFlagBitsNV values"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
"text": " pExternalImageFormatProperties
must be a valid pointer to a VkExternalImageFormatPropertiesNV structure"
}
]
},
"vkGetPhysicalDeviceImageFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
"text": " If the pNext
chain of pImageFormatProperties
includes a VkAndroidHardwareBufferUsageANDROID structure, the pNext
chain of pImageFormatInfo
must include a VkPhysicalDeviceExternalImageFormatInfo structure with handleType
set to VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID
"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
"text": " pImageFormatInfo
must be a valid pointer to a valid VkPhysicalDeviceImageFormatInfo2 structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
"text": " pImageFormatProperties
must be a valid pointer to a VkImageFormatProperties2 structure"
}
]
},
"VkPhysicalDeviceImageFormatInfo2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
"text": " tiling
must be VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
if and only if the pNext
chain includes VkPhysicalDeviceImageDrmFormatModifierInfoEXT"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
"text": " If tiling
is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT
and flags
contains VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT
, then the pNext
chain must include a VkImageFormatListCreateInfo structure with non-zero viewFormatCount
"
}
],
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkImageCompressionControlEXT, VkImageFormatListCreateInfo, VkImageStencilUsageCreateInfo, VkOpticalFlowImageFormatInfoNV, VkPhysicalDeviceExternalImageFormatInfo, VkPhysicalDeviceImageDrmFormatModifierInfoEXT, VkPhysicalDeviceImageViewImageFormatInfoEXT, or VkVideoProfileListInfoKHR"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
"text": " format
must be a valid VkFormat value"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
"text": " type
must be a valid VkImageType value"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
"text": " tiling
must be a valid VkImageTiling value"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
"text": " usage
must be a valid combination of VkImageUsageFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
"text": " flags
must be a valid combination of VkImageCreateFlagBits values"
}
]
},
"VkImageFormatProperties2": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
{
"vuid": "VUID-VkImageFormatProperties2-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2
"
},
{
"vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
"text": " Each pNext
member of any structure (including this one) in the pNext
chain must be either NULL
or a pointer to a valid instance of VkAndroidHardwareBufferUsageANDROID, VkExternalImageFormatProperties, VkFilterCubicImageViewImageFormatPropertiesEXT, VkImageCompressionPropertiesEXT, VkSamplerYcbcrConversionImageFormatProperties, or VkTextureLODGatherFormatPropertiesAMD"
},
{
"vuid": "VUID-VkImageFormatProperties2-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
}
]
},
"VkTextureLODGatherFormatPropertiesAMD": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
{
"vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD
"
}
]
},
"VkPhysicalDeviceExternalImageFormatInfo": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
"text": " If handleType
is not 0
, handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"VkExternalImageFormatProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES
"
}
]
},
"VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, then pQueueFamilyIndices
must be a valid pointer to an array of queueFamilyIndexCount
uint32_t
values"
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, then queueFamilyIndexCount
must be greater than 1
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
"text": " If sharingMode
is VK_SHARING_MODE_CONCURRENT
, each element of pQueueFamilyIndices
must be unique and must be less than the pQueueFamilyPropertyCount
returned by vkGetPhysicalDeviceQueueFamilyProperties2 for the physicalDevice
that was used to create device
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
"text": " sharingMode
must be a valid VkSharingMode value"
}
]
},
"VkSamplerYcbcrConversionImageFormatProperties": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
{
"vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES
"
}
]
},
"VkAndroidHardwareBufferUsageANDROID": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
{
"vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID
"
}
]
},
"VkPhysicalDeviceImageViewImageFormatInfoEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT
"
},
{
"vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
"text": " imageViewType
must be a valid VkImageViewType value"
}
]
},
"VkFilterCubicImageViewImageFormatPropertiesEXT": {
"(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
{
"vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT
"
},
{
"vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
"text": " If the pNext
chain of the VkImageFormatProperties2 structure includes a VkFilterCubicImageViewImageFormatPropertiesEXT structure, the pNext
chain of the VkPhysicalDeviceImageFormatInfo2 structure must include a VkPhysicalDeviceImageViewImageFormatInfoEXT structure with an imageViewType
that is compatible with imageType
"
}
]
},
"vkGetPhysicalDeviceExternalBufferProperties": {
"(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
"text": " pExternalBufferInfo
must be a valid pointer to a valid VkPhysicalDeviceExternalBufferInfo structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
"text": " pExternalBufferProperties
must be a valid pointer to a VkExternalBufferProperties structure"
}
]
},
"VkPhysicalDeviceExternalBufferInfo": {
"(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
"text": " flags
must be a valid combination of VkBufferCreateFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
"text": " usage
must be a valid combination of VkBufferUsageFlagBits values"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
"text": " usage
must not be 0
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
"text": " handleType
must be a valid VkExternalMemoryHandleTypeFlagBits value"
}
]
},
"VkExternalBufferProperties": {
"(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
{
"vuid": "VUID-VkExternalBufferProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES
"
},
{
"vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceExternalSemaphoreProperties": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
"text": " pExternalSemaphoreInfo
must be a valid pointer to a valid VkPhysicalDeviceExternalSemaphoreInfo structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
"text": " pExternalSemaphoreProperties
must be a valid pointer to a VkExternalSemaphoreProperties structure"
}
]
},
"VkPhysicalDeviceExternalSemaphoreInfo": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
"text": " pNext
must be NULL
or a pointer to a valid instance of VkSemaphoreTypeCreateInfo"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
"text": " handleType
must be a valid VkExternalSemaphoreHandleTypeFlagBits value"
}
]
},
"VkExternalSemaphoreProperties": {
"(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
{
"vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES
"
},
{
"vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceExternalFenceProperties": {
"(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
"text": " pExternalFenceInfo
must be a valid pointer to a valid VkPhysicalDeviceExternalFenceInfo structure"
},
{
"vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
"text": " pExternalFenceProperties
must be a valid pointer to a VkExternalFenceProperties structure"
}
]
},
"VkPhysicalDeviceExternalFenceInfo": {
"(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
"text": " handleType
must be a valid VkExternalFenceHandleTypeFlagBits value"
}
]
},
"VkExternalFenceProperties": {
"(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
{
"vuid": "VUID-VkExternalFenceProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES
"
},
{
"vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
"(VK_EXT_calibrated_timestamps)": [
{
"vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
"text": " pTimeDomainCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
"text": " If the value referenced by pTimeDomainCount
is not 0
, and pTimeDomains
is not NULL
, pTimeDomains
must be a valid pointer to an array of pTimeDomainCount
VkTimeDomainEXT values"
}
]
},
"vkSetDebugUtilsObjectNameEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
"text": " pNameInfo->objectType
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
"text": " pNameInfo->objectHandle
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
"text": " pNameInfo
must be a valid pointer to a valid VkDebugUtilsObjectNameInfoEXT structure"
}
]
},
"VkDebugUtilsObjectNameInfoEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
"text": " If objectType
is VK_OBJECT_TYPE_UNKNOWN
, objectHandle
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
"text": " If objectType
is not VK_OBJECT_TYPE_UNKNOWN
, objectHandle
must be VK_NULL_HANDLE or a valid Vulkan handle of the type associated with objectType
as defined in the VkObjectType
and Vulkan Handle Relationship table"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkObjectType value"
},
{
"vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
"text": " If pObjectName
is not NULL
, pObjectName
must be a null-terminated UTF-8 string"
}
]
},
"vkSetDebugUtilsObjectTagEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
"text": " pTagInfo
must be a valid pointer to a valid VkDebugUtilsObjectTagInfoEXT structure"
}
]
},
"VkDebugUtilsObjectTagInfoEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
"text": " objectType
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
"text": " objectHandle
must be a valid Vulkan handle of the type associated with objectType
as defined in the VkObjectType
and Vulkan Handle Relationship table"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkObjectType value"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
"text": " pTag
must be a valid pointer to an array of tagSize
bytes"
},
{
"vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
"text": " tagSize
must be greater than 0
"
}
]
},
"vkQueueBeginDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT structure"
}
]
},
"VkDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
"text": " pLabelName
must be a null-terminated UTF-8 string"
}
]
},
"vkQueueEndDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
"text": " There must be an outstanding vkQueueBeginDebugUtilsLabelEXT
command prior to the vkQueueEndDebugUtilsLabelEXT
on the queue"
},
{
"vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
}
]
},
"vkQueueInsertDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT structure"
}
]
},
"vkCmdBeginDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT structure"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdEndDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
"text": " There must be an outstanding vkCmdBeginDebugUtilsLabelEXT
command prior to the vkCmdEndDebugUtilsLabelEXT
on the queue that commandBuffer
is submitted to"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
"text": " If commandBuffer
is a secondary command buffer, there must be an outstanding vkCmdBeginDebugUtilsLabelEXT
command recorded to commandBuffer
that has not previously been ended by a call to vkCmdEndDebugUtilsLabelEXT
"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdInsertDebugUtilsLabelEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
"text": " pLabelInfo
must be a valid pointer to a valid VkDebugUtilsLabelEXT structure"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCreateDebugUtilsMessengerEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDebugUtilsMessengerCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
"text": " pMessenger
must be a valid pointer to a VkDebugUtilsMessengerEXT handle"
}
]
},
"VkDebugUtilsMessengerCreateInfoEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
"text": " pfnUserCallback
must be a valid PFN_vkDebugUtilsMessengerCallbackEXT"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
"text": " messageSeverity
must be a valid combination of VkDebugUtilsMessageSeverityFlagBitsEXT values"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
"text": " messageSeverity
must not be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
"text": " messageType
must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
"text": " messageType
must not be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter",
"text": " pfnUserCallback
must be a valid PFN_vkDebugUtilsMessengerCallbackEXT value"
}
]
},
"PFN_vkDebugUtilsMessengerCallbackEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-PFN_vkDebugUtilsMessengerCallbackEXT-None-04769",
"text": " The callback must not make calls to any Vulkan commands"
}
]
},
"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
or a pointer to a valid instance of VkDeviceAddressBindingCallbackDataEXT"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-unique",
"text": " The sType
value of each struct in the pNext
chain must be unique"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
"text": " flags
must be 0
"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
"text": " If pMessageIdName
is not NULL
, pMessageIdName
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
"text": " pMessage
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
"text": " If queueLabelCount
is not 0
, pQueueLabels
must be a valid pointer to an array of queueLabelCount
valid VkDebugUtilsLabelEXT structures"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
"text": " If cmdBufLabelCount
is not 0
, pCmdBufLabels
must be a valid pointer to an array of cmdBufLabelCount
valid VkDebugUtilsLabelEXT structures"
},
{
"vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
"text": " If objectCount
is not 0
, pObjects
must be a valid pointer to an array of objectCount
valid VkDebugUtilsObjectNameInfoEXT structures"
}
]
},
"VkDeviceAddressBindingCallbackDataEXT": {
"(VK_EXT_debug_utils)+(VK_EXT_device_address_binding_report)": [
{
"vuid": "VUID-VkDeviceAddressBindingCallbackDataEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT
"
},
{
"vuid": "VUID-VkDeviceAddressBindingCallbackDataEXT-flags-parameter",
"text": " flags
must be a valid combination of VkDeviceAddressBindingFlagBitsEXT values"
},
{
"vuid": "VUID-VkDeviceAddressBindingCallbackDataEXT-bindingType-parameter",
"text": " bindingType
must be a valid VkDeviceAddressBindingTypeEXT value"
}
]
},
"vkSubmitDebugUtilsMessageEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
"text": " The objectType
member of each element of pCallbackData->pObjects
must not be VK_OBJECT_TYPE_UNKNOWN
"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
"text": " messageSeverity
must be a valid VkDebugUtilsMessageSeverityFlagBitsEXT value"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
"text": " messageTypes
must be a valid combination of VkDebugUtilsMessageTypeFlagBitsEXT values"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
"text": " messageTypes
must not be 0
"
},
{
"vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
"text": " pCallbackData
must be a valid pointer to a valid VkDebugUtilsMessengerCallbackDataEXT structure"
}
]
},
"vkDestroyDebugUtilsMessengerEXT": {
"(VK_EXT_debug_utils)": [
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
"text": " If VkAllocationCallbacks
were provided when messenger
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
"text": " If no VkAllocationCallbacks
were provided when messenger
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
"text": " If messenger
is not VK_NULL_HANDLE, 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": " If messenger
is a valid handle, it must have been created, allocated, or retrieved from instance
"
}
]
},
"vkDebugMarkerSetObjectNameEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
"text": " pNameInfo
must be a valid pointer to a valid VkDebugMarkerObjectNameInfoEXT structure"
}
]
},
"VkDebugMarkerObjectNameInfoEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
"text": " objectType
must not be VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
"text": " object
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
"text": " object
must be a Vulkan object of the type associated with objectType
as defined in VkDebugReportObjectTypeEXT
and Vulkan Handle Relationship"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkDebugReportObjectTypeEXT value"
},
{
"vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
"text": " pObjectName
must be a null-terminated UTF-8 string"
}
]
},
"vkDebugMarkerSetObjectTagEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
"text": " pTagInfo
must be a valid pointer to a valid VkDebugMarkerObjectTagInfoEXT structure"
}
]
},
"VkDebugMarkerObjectTagInfoEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
"text": " objectType
must not be VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
"text": " object
must not be VK_NULL_HANDLE"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
"text": " object
must be a Vulkan object of the type associated with objectType
as defined in VkDebugReportObjectTypeEXT
and Vulkan Handle Relationship"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
"text": " objectType
must be a valid VkDebugReportObjectTypeEXT value"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
"text": " pTag
must be a valid pointer to an array of tagSize
bytes"
},
{
"vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
"text": " tagSize
must be greater than 0
"
}
]
},
"vkCmdDebugMarkerBeginEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkDebugMarkerMarkerInfoEXT structure"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdDebugMarkerBeginEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkDebugMarkerMarkerInfoEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
"text": " pMarkerName
must be a null-terminated UTF-8 string"
}
]
},
"vkCmdDebugMarkerEndEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
"text": " There must be an outstanding vkCmdDebugMarkerBeginEXT command prior to the vkCmdDebugMarkerEndEXT
on the queue that commandBuffer
is submitted to"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
"text": " If commandBuffer
is a secondary command buffer, there must be an outstanding vkCmdDebugMarkerBeginEXT command recorded to commandBuffer
that has not previously been ended by a call to vkCmdDebugMarkerEndEXT"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdDebugMarkerEndEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCmdDebugMarkerInsertEXT": {
"(VK_EXT_debug_marker)": [
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
"text": " pMarkerInfo
must be a valid pointer to a valid VkDebugMarkerMarkerInfoEXT structure"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdDebugMarkerInsertEXT-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkCreateDebugReportCallbackEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkDebugReportCallbackCreateInfoEXT structure"
},
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
"text": " pCallback
must be a valid pointer to a VkDebugReportCallbackEXT handle"
}
]
},
"VkDebugReportCallbackCreateInfoEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
"
},
{
"vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
"text": " flags
must be a valid combination of VkDebugReportFlagBitsEXT values"
},
{
"vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter",
"text": " pfnCallback
must be a valid PFN_vkDebugReportCallbackEXT value"
}
]
},
"vkDebugReportMessageEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-vkDebugReportMessageEXT-object-01241",
"text": " object
must be a Vulkan object or VK_NULL_HANDLE"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
"text": " If objectType
is not VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT
and object
is not VK_NULL_HANDLE, object
must be a Vulkan object of the corresponding type associated with objectType
as defined in VkDebugReportObjectTypeEXT
and Vulkan Handle Relationship"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
"text": " flags
must be a valid combination of VkDebugReportFlagBitsEXT values"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
"text": " flags
must not be 0
"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
"text": " objectType
must be a valid VkDebugReportObjectTypeEXT value"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
"text": " pLayerPrefix
must be a null-terminated UTF-8 string"
},
{
"vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
"text": " pMessage
must be a null-terminated UTF-8 string"
}
]
},
"vkDestroyDebugReportCallbackEXT": {
"(VK_EXT_debug_report)": [
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
"text": " If VkAllocationCallbacks
were provided when callback
was created, a compatible set of callbacks must be provided here"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
"text": " If no VkAllocationCallbacks
were provided when callback
was created, pAllocator
must be NULL
"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
"text": " instance
must be a valid VkInstance handle"
},
{
"vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
"text": " If callback
is not VK_NULL_HANDLE, 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": " If callback
is a valid handle, it must have been created, allocated, or retrieved from instance
"
}
]
},
"vkCmdSetCheckpointNV": {
"(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, compute, or transfer operations"
},
{
"vuid": "VUID-vkCmdSetCheckpointNV-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"vkGetQueueCheckpointData2NV": {
"(VK_NV_device_diagnostic_checkpoints)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-vkGetQueueCheckpointData2NV-queue-03892",
"text": " The device that queue
belongs to must be in the lost state"
},
{
"vuid": "VUID-vkGetQueueCheckpointData2NV-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkGetQueueCheckpointData2NV-pCheckpointDataCount-parameter",
"text": " pCheckpointDataCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetQueueCheckpointData2NV-pCheckpointData-parameter",
"text": " If the value referenced by pCheckpointDataCount
is not 0
, and pCheckpointData
is not NULL
, pCheckpointData
must be a valid pointer to an array of pCheckpointDataCount
VkCheckpointData2NV structures"
}
]
},
"VkCheckpointData2NV": {
"(VK_NV_device_diagnostic_checkpoints)+(VK_VERSION_1_3,VK_KHR_synchronization2)": [
{
"vuid": "VUID-VkCheckpointData2NV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV
"
},
{
"vuid": "VUID-VkCheckpointData2NV-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetQueueCheckpointDataNV": {
"(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
"text": " The device that queue
belongs to must be in the lost state"
},
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
"text": " queue
must be a valid VkQueue handle"
},
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
"text": " pCheckpointDataCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
"text": " If the value referenced by pCheckpointDataCount
is not 0
, and pCheckpointData
is not NULL
, pCheckpointData
must be a valid pointer to an array of pCheckpointDataCount
VkCheckpointDataNV structures"
}
]
},
"VkCheckpointDataNV": {
"(VK_NV_device_diagnostic_checkpoints)": [
{
"vuid": "VUID-VkCheckpointDataNV-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV
"
},
{
"vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"vkGetDeviceFaultInfoEXT": {
"(VK_EXT_device_fault)": [
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-device-07336",
"text": " device
must be in the lost state"
},
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-07337",
"text": " If the value referenced by pFaultCounts->addressInfoCount
is not 0
, and pFaultInfo->pAddressInfos
is not NULL
, pFaultInfo->pAddressInfos
must be a valid pointer to an array of pFaultCounts->addressInfoCount
VkDeviceFaultAddressInfoEXT structures"
},
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-07338",
"text": " If the value referenced by pFaultCounts->vendorInfoCount
is not 0
, and pFaultInfo->pVendorInfos
is not NULL
, pFaultInfo->pVendorInfos
must be a valid pointer to an array of pFaultCounts->vendorInfoCount
VkDeviceFaultVendorInfoEXT structures"
},
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-07339",
"text": " If the value referenced by pFaultCounts->vendorBinarySize
is not 0
, and pFaultInfo->pVendorBinaryData
is not NULL
, pFaultInfo->pVendorBinaryData
must be a valid pointer to an array of pFaultCounts->vendorBinarySize
bytes"
},
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultCounts-parameter",
"text": " pFaultCounts
must be a valid pointer to a VkDeviceFaultCountsEXT structure"
},
{
"vuid": "VUID-vkGetDeviceFaultInfoEXT-pFaultInfo-parameter",
"text": " If pFaultInfo
is not NULL
, pFaultInfo
must be a valid pointer to a VkDeviceFaultInfoEXT structure"
}
]
},
"VkDeviceFaultCountsEXT": {
"(VK_EXT_device_fault)": [
{
"vuid": "VUID-VkDeviceFaultCountsEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT
"
},
{
"vuid": "VUID-VkDeviceFaultCountsEXT-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"VkDeviceFaultInfoEXT": {
"(VK_EXT_device_fault)": [
{
"vuid": "VUID-VkDeviceFaultInfoEXT-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT
"
},
{
"vuid": "VUID-VkDeviceFaultInfoEXT-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDeviceFaultInfoEXT-pAddressInfos-parameter",
"text": " If pAddressInfos
is not NULL
, pAddressInfos
must be a valid pointer to a VkDeviceFaultAddressInfoEXT structure"
},
{
"vuid": "VUID-VkDeviceFaultInfoEXT-pVendorInfos-parameter",
"text": " If pVendorInfos
is not NULL
, pVendorInfos
must be a valid pointer to a VkDeviceFaultVendorInfoEXT structure"
}
]
},
"VkDeviceFaultAddressInfoEXT": {
"(VK_EXT_device_fault)": [
{
"vuid": "VUID-VkDeviceFaultAddressInfoEXT-addressType-parameter",
"text": " addressType
must be a valid VkDeviceFaultAddressTypeEXT value"
}
]
},
"VkDeviceFaultVendorBinaryHeaderVersionOneEXT": {
"(VK_EXT_device_fault)": [
{
"vuid": "VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerSize-07340",
"text": " headerSize
must be 56"
},
{
"vuid": "VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-07341",
"text": " headerVersion
must be VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT
"
},
{
"vuid": "VUID-VkDeviceFaultVendorBinaryHeaderVersionOneEXT-headerVersion-parameter",
"text": " headerVersion
must be a valid VkDeviceFaultVendorBinaryHeaderVersionEXT value"
}
]
},
"vkGetPhysicalDeviceToolProperties": {
"(VK_VERSION_1_3,VK_EXT_tooling_info)": [
{
"vuid": "VUID-vkGetPhysicalDeviceToolProperties-physicalDevice-parameter",
"text": " physicalDevice
must be a valid VkPhysicalDevice handle"
},
{
"vuid": "VUID-vkGetPhysicalDeviceToolProperties-pToolCount-parameter",
"text": " pToolCount
must be a valid pointer to a uint32_t
value"
},
{
"vuid": "VUID-vkGetPhysicalDeviceToolProperties-pToolProperties-parameter",
"text": " If the value referenced by pToolCount
is not 0
, and pToolProperties
is not NULL
, pToolProperties
must be a valid pointer to an array of pToolCount
VkPhysicalDeviceToolProperties structures"
}
]
},
"VkPhysicalDeviceToolProperties": {
"(VK_VERSION_1_3,VK_EXT_tooling_info)": [
{
"vuid": "VUID-VkPhysicalDeviceToolProperties-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES
"
},
{
"vuid": "VUID-VkPhysicalDeviceToolProperties-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
},
"StandaloneSpirv": {
"core": [
{
"vuid": "VUID-StandaloneSpirv-None-04633",
"text": " Every entry point must have no return value and accept no arguments"
},
{
"vuid": "VUID-StandaloneSpirv-None-04634",
"text": " The static function-call graph for an entry point must not contain cycles; that is, static recursion is not allowed"
},
{
"vuid": "VUID-StandaloneSpirv-None-04635",
"text": " The Logical or PhysicalStorageBuffer64 addressing model must be selected"
},
{
"vuid": "VUID-StandaloneSpirv-None-04636",
"text": " Scope for execution must be limited to Workgroup or Subgroup"
},
{
"vuid": "VUID-StandaloneSpirv-None-04637",
"text": " If the Scope for execution is Workgroup, then it must only be used in the task, mesh, tessellation control, or compute execution models"
},
{
"vuid": "VUID-StandaloneSpirv-None-04638",
"text": " Scope for memory must be limited to Device, QueueFamily, Workgroup, ShaderCallKHR, Subgroup, or Invocation"
},
{
"vuid": "VUID-StandaloneSpirv-ExecutionModel-07320",
"text": " If the ExecutionModel
is TessellationControl, and the MemoryModel
is GLSL450, the Scope for memory must not be Workgroup"
},
{
"vuid": "VUID-StandaloneSpirv-None-07321",
"text": " If the Scope for memory is Workgroup, then it must only be used in the task, mesh, tessellation control, or compute execution models"
},
{
"vuid": "VUID-StandaloneSpirv-None-04640",
"text": " If the Scope for memory is ShaderCallKHR, then it must only be used in ray generation, intersection, closest hit, any-hit, miss, and callable execution models"
},
{
"vuid": "VUID-StandaloneSpirv-None-04641",
"text": " If the Scope for memory is Invocation, then memory semantics must be None"
},
{
"vuid": "VUID-StandaloneSpirv-None-04643",
"text": " Storage Class must be limited to UniformConstant, Input, Uniform, Output, Workgroup, Private, Function, PushConstant, Image, StorageBuffer, RayPayloadKHR, IncomingRayPayloadKHR, HitAttributeKHR, CallableDataKHR, IncomingCallableDataKHR, ShaderRecordBufferKHR, or PhysicalStorageBuffer"
},
{
"vuid": "VUID-StandaloneSpirv-None-04644",
"text": " If the Storage Class is Output, then it must not be used in the GlCompute, RayGenerationKHR, IntersectionKHR, AnyHitKHR, ClosestHitKHR, MissKHR, or CallableKHR execution models"
},
{
"vuid": "VUID-StandaloneSpirv-None-04645",
"text": " If the Storage Class is Workgroup, then it must only be used in the task, mesh, or compute execution models"
},
{
"vuid": "VUID-StandaloneSpirv-OpAtomicStore-04730",
"text": " OpAtomicStore
must not use Acquire, AcquireRelease, or SequentiallyConsistent memory semantics"
},
{
"vuid": "VUID-StandaloneSpirv-OpAtomicLoad-04731",
"text": " OpAtomicLoad
must not use Release, AcquireRelease, or SequentiallyConsistent memory semantics"
},
{
"vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04732",
"text": " OpMemoryBarrier
must use one of Acquire, Release, AcquireRelease, or SequentiallyConsistent memory semantics"
},
{
"vuid": "VUID-StandaloneSpirv-OpMemoryBarrier-04733",
"text": " OpMemoryBarrier
must include at least one storage class"
},
{
"vuid": "VUID-StandaloneSpirv-OpControlBarrier-04650",
"text": " If the semantics for OpControlBarrier
includes one of Acquire, Release, AcquireRelease, or SequentiallyConsistent memory semantics, then it must include at least one storage class"
},
{
"vuid": "VUID-StandaloneSpirv-OpVariable-04651",
"text": " Any OpVariable
with an Initializer
operand must have Output, Private, Function, or Workgroup as its Storage Class operand"
},
{
"vuid": "VUID-StandaloneSpirv-OpVariable-04734",
"text": " Any OpVariable
with an Initializer
operand and Workgroup as its Storage Class operand must use OpConstantNull
as the initializer"
},
{
"vuid": "VUID-StandaloneSpirv-OpReadClockKHR-04652",
"text": " Scope for OpReadClockKHR
must be limited to Subgroup or Device"
},
{
"vuid": "VUID-StandaloneSpirv-OriginLowerLeft-04653",
"text": " The OriginLowerLeft
execution mode must not be used; fragment entry points must declare OriginUpperLeft
"
},
{
"vuid": "VUID-StandaloneSpirv-PixelCenterInteger-04654",
"text": " The PixelCenterInteger
execution mode must not be used (pixels are always centered at half-integer coordinates)"
},
{
"vuid": "VUID-StandaloneSpirv-UniformConstant-04655",
"text": " Any variable in the UniformConstant
storage class must be typed as either OpTypeImage
, OpTypeSampler
, OpTypeSampledImage
, OpTypeAccelerationStructureKHR
, or an array of one of these types"
},
{
"vuid": "VUID-StandaloneSpirv-Uniform-06807",
"text": " Any variable in the Uniform
or StorageBuffer
storage class must be typed as OpTypeStruct
or an array of this type"
},
{
"vuid": "VUID-StandaloneSpirv-PushConstant-06808",
"text": " Any variable in the PushConstant
storage class must be typed as OpTypeStruct
"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeImage-04656",
"text": " OpTypeImage
must declare a scalar 32-bit float, 64-bit integer, or 32-bit integer type for the “Sampled Type” (RelaxedPrecision
can be applied to a sampling instruction and to the variable holding the result of a sampling instruction)"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeImage-04657",
"text": " OpTypeImage
must have a “Sampled” operand of 1 (sampled image) or 2 (storage image)"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeSampledImage-06671",
"text": " OpTypeSampledImage
must have a OpTypeImage
with a “Sampled” operand of 1 (sampled image)"
},
{
"vuid": "VUID-StandaloneSpirv-Image-04965",
"text": " The converted bit width, signedness, and numeric type of the Image
Format
operand of an OpTypeImage
must match the Sampled
Type
, as defined in Image Format and Type Matching"
},
{
"vuid": "VUID-StandaloneSpirv-OpImageTexelPointer-04658",
"text": " If an OpImageTexelPointer
is used in an atomic operation, the image type of the image
parameter to OpImageTexelPointer
must have an image format of R64i
, R64ui
, R32f
, R32i
, or R32ui
"
},
{
"vuid": "VUID-StandaloneSpirv-OpImageQuerySizeLod-04659",
"text": " OpImageQuerySizeLod
, OpImageQueryLod
, and OpImageQueryLevels
must only consume an “Image” operand whose type has its “Sampled” operand set to 1"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeImage-06214",
"text": " An OpTypeImage
with a “Dim” operand of SubpassData
must have an “Arrayed” operand of 0 (non-arrayed) and a “Sampled” operand of 2 (storage image)"
},
{
"vuid": "VUID-StandaloneSpirv-SubpassData-04660",
"text": " The (u,v) coordinates used for a SubpassData
must be the <id> of a constant vector (0,0), or if a layer coordinate is used, must be a vector that was formed with constant 0 for the u and v components"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeImage-06924",
"text": " Objects of types OpTypeImage
, OpTypeSampler
, OpTypeSampledImage
, OpTypeAccelerationStructureKHR
, and arrays of these types must not be stored to or modified"
},
{
"vuid": "VUID-StandaloneSpirv-Uniform-06925",
"text": " Any variable in the Uniform
storage class decorated as Block
must not be stored to or modified"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04662",
"text": " Any image operation must use at most one of the Offset
, ConstOffset
, and ConstOffsets
image operands"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04663",
"text": " Image operand Offset
must only be used with OpImage*Gather
instructions"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04865",
"text": " Any image instruction which uses an Offset
, ConstOffset
, or ConstOffsets
image operand, must only consume a “Sampled Image” operand whose type has its “Sampled” operand set to 1"
},
{
"vuid": "VUID-StandaloneSpirv-OpImageGather-04664",
"text": " The “Component” operand of OpImageGather
, and OpImageSparseGather
must be the <id> of a constant instruction"
},
{
"vuid": "VUID-StandaloneSpirv-OpImage-04777",
"text": " OpImage*Dref*
instructions must not consume an image whose Dim
is 3D"
},
{
"vuid": "VUID-StandaloneSpirv-None-04667",
"text": " Structure types must not contain opaque types"
},
{
"vuid": "VUID-StandaloneSpirv-BuiltIn-04668",
"text": " Any BuiltIn
decoration not listed in Built-In Variables must not be used"
},
{
"vuid": "VUID-StandaloneSpirv-Location-06672",
"text": " The Location
or Component
decorations must only be used with the Input
, Output
, RayPayloadKHR
, IncomingRayPayloadKHR
, HitAttributeKHR
, CallableDataKHR
, IncomingCallableDataKHR
, or ShaderRecordBufferKHR
storage classes"
},
{
"vuid": "VUID-StandaloneSpirv-Location-04915",
"text": " The Location
or Component
decorations must not be used with BuiltIn
"
},
{
"vuid": "VUID-StandaloneSpirv-Location-04916",
"text": " The Location
decorations must be used on user-defined variables"
},
{
"vuid": "VUID-StandaloneSpirv-Location-04917",
"text": " The Location
decorations must be used on an OpVariable
with a structure type that is not a block"
},
{
"vuid": "VUID-StandaloneSpirv-Location-04918",
"text": " The Location
decorations must not be used on the members of OpVariable
with a structure type that is decorated with Location
"
},
{
"vuid": "VUID-StandaloneSpirv-Location-04919",
"text": " The Location
decorations must be used on each member of OpVariable
with a structure type that is a block not decorated with Location
"
},
{
"vuid": "VUID-StandaloneSpirv-Component-04920",
"text": " The Component
decoration value must not be greater than 3"
},
{
"vuid": "VUID-StandaloneSpirv-Component-04921",
"text": " If the Component
decoration is used on an OpVariable
that has a OpTypeVector
type with a Component
Type
with a Width
that is less than or equal to 32, the sum of its Component
Count
and the Component
decoration value must be less than 4"
},
{
"vuid": "VUID-StandaloneSpirv-Component-04922",
"text": " If the Component
decoration is used on an OpVariable
that has a OpTypeVector
type with a Component
Type
with a Width
that is equal to 64, the sum of two times its Component
Count
and the Component
decoration value must be less than 4"
},
{
"vuid": "VUID-StandaloneSpirv-Component-04923",
"text": " The Component
decorations value must not be 1 or 3 for scalar or two-component 64-bit data types"
},
{
"vuid": "VUID-StandaloneSpirv-Component-04924",
"text": " The Component
decorations must not used with any type that is not a scalar or vector"
},
{
"vuid": "VUID-StandaloneSpirv-GLSLShared-04669",
"text": " The GLSLShared
and GLSLPacked
decorations must not be used"
},
{
"vuid": "VUID-StandaloneSpirv-Flat-04670",
"text": " The Flat
, NoPerspective
, Sample
, and Centroid
decorations must only be used on variables with the Output
or Input
storage class"
},
{
"vuid": "VUID-StandaloneSpirv-Flat-06201",
"text": " The Flat
, NoPerspective
, Sample
, and Centroid
decorations must not be used on variables with the Output
storage class in a fragment shader"
},
{
"vuid": "VUID-StandaloneSpirv-Flat-06202",
"text": " The Flat
, NoPerspective
, Sample
, and Centroid
decorations must not be used on variables with the Input
storage class in a vertex shader"
},
{
"vuid": "VUID-StandaloneSpirv-PerVertexKHR-06777",
"text": " The PerVertexKHR
decoration must only be used on variables with the Input
storage class in a fragment shader"
},
{
"vuid": "VUID-StandaloneSpirv-Flat-04744",
"text": " Any variable with integer or double-precision floating-point type and with Input
storage class in a fragment shader, must be decorated Flat
"
},
{
"vuid": "VUID-StandaloneSpirv-ViewportRelativeNV-04672",
"text": " The ViewportRelativeNV
decoration must only be used on a variable decorated with Layer
in the vertex, tessellation evaluation, or geometry shader stages"
},
{
"vuid": "VUID-StandaloneSpirv-ViewportRelativeNV-04673",
"text": " The ViewportRelativeNV
decoration must not be used unless a variable decorated with one of ViewportIndex
or ViewportMaskNV
is also statically used by the same OpEntryPoint
"
},
{
"vuid": "VUID-StandaloneSpirv-ViewportMaskNV-04674",
"text": " The ViewportMaskNV
and ViewportIndex
decorations must not both be statically used by one or more OpEntryPoint
’s that form the pre-rasterization shader stages of a graphics pipeline"
},
{
"vuid": "VUID-StandaloneSpirv-FPRoundingMode-04675",
"text": " Rounding modes other than round-to-nearest-even and round-towards-zero must not be used for the FPRoundingMode
decoration"
},
{
"vuid": "VUID-StandaloneSpirv-Invariant-04677",
"text": " Variables decorated with Invariant
and variables with structure types that have any members decorated with Invariant
must be in the Output
or Input
storage class, Invariant
used on an Input
storage class variable or structure member has no effect"
},
{
"vuid": "VUID-StandaloneSpirv-VulkanMemoryModel-04678",
"text": " If the VulkanMemoryModel
capability is not declared, the Volatile
decoration must be used on any variable declaration that includes one of the SMIDNV
, WarpIDNV
, SubgroupSize
, SubgroupLocalInvocationId
, SubgroupEqMask
, SubgroupGeMask
, SubgroupGtMask
, SubgroupLeMask
, or SubgroupLtMask
BuiltIn
decorations when used in the ray generation, closest hit, miss, intersection, or callable shaders, or with the RayTmaxKHR
Builtin
decoration when used in an intersection shader"
},
{
"vuid": "VUID-StandaloneSpirv-VulkanMemoryModel-04679",
"text": " If the VulkanMemoryModel
capability is declared, the OpLoad
instruction must use the Volatile
memory semantics when it accesses into any variable that includes one of the SMIDNV
, WarpIDNV
, SubgroupSize
, SubgroupLocalInvocationId
, SubgroupEqMask
, SubgroupGeMask
, SubgroupGtMask
, SubgroupLeMask
, or SubgroupLtMask
BuiltIn
decorations when used in the ray generation, closest hit, miss, intersection, or callable shaders, or with the RayTmaxKHR
Builtin
decoration when used in an intersection shader"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeRuntimeArray-04680",
"text": " OpTypeRuntimeArray
must only be used for the last member of a Block
-decorated OpTypeStruct
in StorageBuffer
or PhysicalStorageBuffer
storage classes; BufferBlock
-decorated OpTypeStruct
in Uniform
storage class; the outermost dimension of an arrayed variable in the StorageBuffer
, Uniform
, or UniformConstant
storage classes."
},
{
"vuid": "VUID-StandaloneSpirv-Function-04681",
"text": " A type T that is an array sized with a specialization constant must neither be, nor be contained in, the type T2 of a variable V, unless either: a) T is equal to T2, b) V is declared in the Function
, or Private
storage classes, c) V is a non-Block variable in the Workgroup
storage class, or d) V is an interface variable with an additional level of arrayness, as described in interface matching, and T is the member type of the array type T2"
},
{
"vuid": "VUID-StandaloneSpirv-OpControlBarrier-04682",
"text": " If OpControlBarrier
is used in ray generation, intersection, any-hit, closest hit, miss, fragment, vertex, tessellation evaluation, or geometry shaders, the execution Scope must be Subgroup
"
},
{
"vuid": "VUID-StandaloneSpirv-LocalSize-06426",
"text": " For each compute shader entry point, either a LocalSize
or LocalSizeId
execution mode, or an object decorated with the WorkgroupSize
decoration must be specified"
},
{
"vuid": "VUID-StandaloneSpirv-DerivativeGroupQuadsNV-04684",
"text": " For compute shaders using the DerivativeGroupQuadsNV
execution mode, the first two dimensions of the local workgroup size must be a multiple of two"
},
{
"vuid": "VUID-StandaloneSpirv-DerivativeGroupLinearNV-04778",
"text": " For compute shaders using the DerivativeGroupLinearNV
execution mode, the product of the dimensions of the local workgroup size must be a multiple of four"
},
{
"vuid": "VUID-StandaloneSpirv-OpGroupNonUniformBallotBitCount-04685",
"text": " If OpGroupNonUniformBallotBitCount
is used, the group operation must be limited to Reduce, InclusiveScan, or ExclusiveScan"
},
{
"vuid": "VUID-StandaloneSpirv-None-04686",
"text": " The Pointer operand of all atomic instructions must have a Storage Class limited to Uniform, Workgroup, Image, StorageBuffer, PhysicalStorageBuffer, or TaskPayloadWorkgroupEXT"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04687",
"text": " Output variables or block members decorated with Offset
that have a 64-bit type, or a composite type containing a 64-bit type, must specify an Offset
value aligned to a 8 byte boundary"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04689",
"text": " The size of any output block containing any member decorated with Offset
that is a 64-bit type must be a multiple of 8"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04690",
"text": " The first member of an output block specifying a Offset
decoration must specify a Offset
value that is aligned to an 8 byte boundary if that block contains any member decorated with Offset
and is a 64-bit type"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04691",
"text": " Output variables or block members decorated with Offset
that have a 32-bit type, or a composite type contains a 32-bit type, must specify an Offset
value aligned to a 4 byte boundary"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04692",
"text": " Output variables, blocks or block members decorated with Offset
must only contain base types that have components that are either 32-bit or 64-bit in size"
},
{
"vuid": "VUID-StandaloneSpirv-Offset-04716",
"text": " Only variables or block members in the output interface decorated with Offset
can be captured for transform feedback, and those variables or block members must also be decorated with XfbBuffer
and XfbStride
, or inherit XfbBuffer
and XfbStride
decorations from a block containing them"
},
{
"vuid": "VUID-StandaloneSpirv-XfbBuffer-04693",
"text": " All variables or block members in the output interface of the entry point being compiled decorated with a specific XfbBuffer
value must all be decorated with identical XfbStride
values"
},
{
"vuid": "VUID-StandaloneSpirv-Stream-04694",
"text": " If any variables or block members in the output interface of the entry point being compiled are decorated with Stream
, then all variables belonging to the same XfbBuffer
must specify the same Stream
value"
},
{
"vuid": "VUID-StandaloneSpirv-XfbBuffer-04696",
"text": " For any two variables or block members in the output interface of the entry point being compiled with the same XfbBuffer
value, the ranges determined by the Offset
decoration and the size of the type must not overlap"
},
{
"vuid": "VUID-StandaloneSpirv-XfbBuffer-04697",
"text": " All block members in the output interface of the entry point being compiled that are in the same block and have a declared or inherited XfbBuffer
decoration must specify the same XfbBuffer
value"
},
{
"vuid": "VUID-StandaloneSpirv-RayPayloadKHR-04698",
"text": " RayPayloadKHR
storage class must only be used in ray generation, closest hit or miss shaders"
},
{
"vuid": "VUID-StandaloneSpirv-IncomingRayPayloadKHR-04699",
"text": " IncomingRayPayloadKHR
storage class must only be used in closest hit, any-hit, or miss shaders"
},
{
"vuid": "VUID-StandaloneSpirv-IncomingRayPayloadKHR-04700",
"text": " There must be at most one variable with the IncomingRayPayloadKHR
storage class in the input interface of an entry point"
},
{
"vuid": "VUID-StandaloneSpirv-HitAttributeKHR-04701",
"text": " HitAttributeKHR
storage class must only be used in intersection, any-hit, or closest hit shaders"
},
{
"vuid": "VUID-StandaloneSpirv-HitAttributeKHR-04702",
"text": " There must be at most one variable with the HitAttributeKHR
storage class in the input interface of an entry point"
},
{
"vuid": "VUID-StandaloneSpirv-HitAttributeKHR-04703",
"text": " A variable with HitAttributeKHR
storage class must only be written to in an intersection shader"
},
{
"vuid": "VUID-StandaloneSpirv-CallableDataKHR-04704",
"text": " CallableDataKHR
storage class must only be used in ray generation, closest hit, miss, and callable shaders"
},
{
"vuid": "VUID-StandaloneSpirv-IncomingCallableDataKHR-04705",
"text": " IncomingCallableDataKHR
storage class must only be used in callable shaders"
},
{
"vuid": "VUID-StandaloneSpirv-IncomingCallableDataKHR-04706",
"text": " There must be at most one variable with the IncomingCallableDataKHR
storage class in the input interface of an entry point"
},
{
"vuid": "VUID-StandaloneSpirv-ShaderRecordBufferKHR-07119",
"text": " ShaderRecordBufferKHR
storage class must only be used in ray generation, intersection, any-hit, closest hit, callable, or miss shaders"
},
{
"vuid": "VUID-StandaloneSpirv-Base-04707",
"text": " The Base
operand of OpPtrAccessChain
must point to one of the following: Workgroup, if VariablePointers
is enabled; StorageBuffer, if VariablePointers
or VariablePointersStorageBuffer
is enabled; PhysicalStorageBuffer, if the PhysicalStorageBuffer64
addressing model is enabled"
},
{
"vuid": "VUID-StandaloneSpirv-PhysicalStorageBuffer64-04708",
"text": " If the PhysicalStorageBuffer64
addressing model is enabled, all instructions that support memory access operands and that use a physical pointer must include the Aligned
operand"
},
{
"vuid": "VUID-StandaloneSpirv-PhysicalStorageBuffer64-04709",
"text": " If the PhysicalStorageBuffer64
addressing model is enabled, any access chain instruction that accesses into a RowMajor
matrix must only be used as the Pointer
operand to OpLoad
or OpStore
"
},
{
"vuid": "VUID-StandaloneSpirv-PhysicalStorageBuffer64-04710",
"text": " If the PhysicalStorageBuffer64
addressing model is enabled, OpConvertUToPtr
and OpConvertPtrToU
must use an integer type whose Width
is 64"
},
{
"vuid": "VUID-StandaloneSpirv-OpTypeForwardPointer-04711",
"text": " OpTypeForwardPointer
must have a storage class of PhysicalStorageBuffer
"
},
{
"vuid": "VUID-StandaloneSpirv-None-04745",
"text": " All block members in a variable with a storage class of PushConstant declared as an array must only be accessed by dynamically uniform indices"
},
{
"vuid": "VUID-StandaloneSpirv-OpVariable-06673",
"text": " There must not be more than one OpVariable
in the PushConstant
storage class listed in the Interface
for each OpEntryPoint
"
},
{
"vuid": "VUID-StandaloneSpirv-OpEntryPoint-06674",
"text": " Each OpEntryPoint
must not statically use more than one OpVariable
in the PushConstant
storage class"
},
{
"vuid": "VUID-StandaloneSpirv-Result-04780",
"text": " The Result
Type
operand of any OpImageRead
or OpImageSparseRead
instruction must be a vector of four components"
},
{
"vuid": "VUID-StandaloneSpirv-Base-04781",
"text": " The Base
operand of any OpBitCount
, OpBitReverse
, OpBitFieldInsert
, OpBitFieldSExtract
, or OpBitFieldUExtract
instruction must be a 32-bit integer scalar or a vector of 32-bit integers"
},
{
"vuid": "VUID-StandaloneSpirv-PushConstant-06675",
"text": " Any variable in the PushConstant
or StorageBuffer
storage class must be decorated as Block
"
},
{
"vuid": "VUID-StandaloneSpirv-Uniform-06676",
"text": " Any variable in the Uniform
storage class must be decorated as Block
or BufferBlock
"
},
{
"vuid": "VUID-StandaloneSpirv-UniformConstant-06677",
"text": " Any variable in the UniformConstant
, StorageBuffer
, or Uniform
storage class must be decorated with DescriptorSet
and Binding
"
},
{
"vuid": "VUID-StandaloneSpirv-InputAttachmentIndex-06678",
"text": " Variables decorated with InputAttachmentIndex
must be in the UniformConstant
storage class"
},
{
"vuid": "VUID-StandaloneSpirv-DescriptorSet-06491",
"text": " If a variable is decorated by DescriptorSet
or Binding
, the storage class must correspond to an entry in Shader Resource and Storage Class Correspondence"
},
{
"vuid": "VUID-StandaloneSpirv-Input-06778",
"text": " Variables with a storage class of Input
in a fragment shader stage that are decorated with PerVertexKHR
must be declared as arrays"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07102",
"text": " The module must not contain both an entry point that uses the TaskEXT
or MeshEXT
{ExecutionModel} and an entry point that uses the TaskNV
or MeshNV
{ExecutionModel}"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07106",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} OpSetMeshOutputsEXT
must be called before any outputs are written"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07107",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} all variables declared as output must not be read from"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07108",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} for OpSetMeshOutputsEXT
instructions, the “Vertex Count” and “Primitive Count” operands must not depend on ViewIndex
"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07109",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} variables decorated with PrimitivePointIndicesEXT
, PrimitiveLineIndicesEXT
, or PrimitiveTriangleIndicesEXT
declared as an array must not be accessed by indices that depend on ViewIndex
"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07110",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} any values stored in variables decorated with PrimitivePointIndicesEXT
, PrimitiveLineIndicesEXT
, or PrimitiveTriangleIndicesEXT
must not depend on ViewIndex
"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07111",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} variables in workgroup or private storage class declared as or containing a composite type must not be accessed by indices that depend on ViewIndex
"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07330",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} the OutputVertices
OpExecutionMode
must be greater than 0"
},
{
"vuid": "VUID-StandaloneSpirv-MeshEXT-07331",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} the OutputPrimitivesEXT
OpExecutionMode
must be greater than 0"
},
{
"vuid": "VUID-StandaloneSpirv-Input-07290",
"text": " Variables with a storage class of Input
or Output
and a type of OpTypeBool
must be decorated with the BuiltIn
decoration"
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-StandaloneSpirv-None-04642",
"text": " Scope for group operations must be limited to Subgroup"
}
],
"!(VK_VERSION_1_1)": [
{
"vuid": "VUID-StandaloneSpirv-SubgroupVoteKHR-06997",
"text": " If the SubgroupVoteKHR
or SubgroupBallotKHR
capability is not declared, Scope for memory must not be Subgroup"
}
]
},
"RuntimeSpirv": {
"(VK_VERSION_1_2,VK_KHR_vulkan_memory_model)": [
{
"vuid": "VUID-RuntimeSpirv-vulkanMemoryModel-06265",
"text": " If vulkanMemoryModel
is enabled and vulkanMemoryModelDeviceScope
is not enabled, Device memory scope must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-vulkanMemoryModel-06266",
"text": " If vulkanMemoryModel
is not enabled, QueueFamily memory scope must not be used."
}
],
"(VK_KHR_shader_clock)": [
{
"vuid": "VUID-RuntimeSpirv-shaderSubgroupClock-06267",
"text": " If shaderSubgroupClock
is not enabled, the Subgroup
scope must not be used for OpReadClockKHR
."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDeviceClock-06268",
"text": " If shaderDeviceClock
is not enabled, the Device
scope must not be used for OpReadClockKHR
."
}
],
"!(VK_VERSION_1_3,VK_KHR_format_feature_flags2)": [
{
"vuid": "VUID-RuntimeSpirv-OpTypeImage-06269",
"text": " If shaderStorageImageWriteWithoutFormat
is not enabled, any variable created with a “Type” of OpTypeImage
that has a “Sampled” operand of 2 and an “Image Format” operand of Unknown
must be decorated with NonWritable
."
},
{
"vuid": "VUID-RuntimeSpirv-OpTypeImage-06270",
"text": " If shaderStorageImageReadWithoutFormat
is not enabled, any variable created with a “Type” of OpTypeImage
that has a “Sampled” operand of 2 and an “Image Format” operand of Unknown
must be decorated with NonReadable
."
}
],
"core": [
{
"vuid": "VUID-RuntimeSpirv-OpImageWrite-07112",
"text": " OpImageWrite
to any Image
whose Image
Format
is not Unknown
must have the Texel
operand contain at least as many components as the corresponding VkFormat as given in the SPIR-V Image Format compatibility table"
},
{
"vuid": "VUID-RuntimeSpirv-Location-06272",
"text": " The sum of Location
and the number of locations the variable it decorates consumes must be less than or equal to the value for the matching {ExecutionModel} defined in Shader Input and Output Locations"
},
{
"vuid": "VUID-RuntimeSpirv-Fragment-06427",
"text": " When blending is enabled and one of the dual source blend modes is in use, the maximum number of output attachments written to in the Fragment
{ExecutionModel} must be less than or equal to maxFragmentDualSrcAttachments
"
},
{
"vuid": "VUID-RuntimeSpirv-Location-06428",
"text": " The maximum number of storage buffers, storage images, and output Location
decorated color attachments written to in the Fragment
{ExecutionModel} must be less than or equal to maxFragmentCombinedOutputResources
"
},
{
"vuid": "VUID-RuntimeSpirv-DescriptorSet-06323",
"text": " DescriptorSet
and Binding
decorations must obey the constraints on storage class, type, and descriptor type described in DescriptorSet and Binding Assignment"
},
{
"vuid": "VUID-RuntimeSpirv-NonWritable-06340",
"text": " If fragmentStoresAndAtomics
is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the fragment stage must be decorated with the NonWritable
decoration."
},
{
"vuid": "VUID-RuntimeSpirv-NonWritable-06341",
"text": " If vertexPipelineStoresAndAtomics
is not enabled, then all storage image, storage texel buffer, and storage buffer variables in the vertex, tessellation, and geometry stages must be decorated with the NonWritable
decoration."
},
{
"vuid": "VUID-RuntimeSpirv-None-06342",
"text": " If subgroupQuadOperationsInAllStages
is VK_FALSE
, then quad subgroup operations must not be used except for in fragment and compute stages."
},
{
"vuid": "VUID-RuntimeSpirv-Offset-06344",
"text": " The first element of the Offset
operand of InterpolateAtOffset
must be greater than or equal to:"
},
{
"vuid": "VUID-RuntimeSpirv-Offset-06345",
"text": " The first element of the Offset
operand of InterpolateAtOffset
must be less than or equal to:"
},
{
"vuid": "VUID-RuntimeSpirv-Offset-06346",
"text": " The second element of the Offset
operand of InterpolateAtOffset
must be greater than or equal to:"
},
{
"vuid": "VUID-RuntimeSpirv-Offset-06347",
"text": " The second element of the Offset
operand of InterpolateAtOffset
must be less than or equal to:"
},
{
"vuid": "VUID-RuntimeSpirv-x-06429",
"text": " The x
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[0]"
},
{
"vuid": "VUID-RuntimeSpirv-y-06430",
"text": " The y
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[1]"
},
{
"vuid": "VUID-RuntimeSpirv-z-06431",
"text": " The z
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupSize
[2]"
},
{
"vuid": "VUID-RuntimeSpirv-x-06432",
"text": " The product of x
size, y
size, and z
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceLimits
::maxComputeWorkGroupInvocations
"
},
{
"vuid": "VUID-RuntimeSpirv-Workgroup-06530",
"text": " The sum of size in bytes for variables and padding in the Workgroup
storage class in the GLCompute
{ExecutionModel} must be less than or equal to maxComputeSharedMemorySize
"
},
{
"vuid": "VUID-RuntimeSpirv-OpImage-06376",
"text": " If an OpImage*Gather
operation has an image operand of Offset
, ConstOffset
, or ConstOffsets
the offset value must be greater than or equal to minTexelGatherOffset"
},
{
"vuid": "VUID-RuntimeSpirv-OpImage-06377",
"text": " If an OpImage*Gather
operation has an image operand of Offset
, ConstOffset
, or ConstOffsets
the offset value must be less than or equal to maxTexelGatherOffset"
},
{
"vuid": "VUID-RuntimeSpirv-OpImageSample-06435",
"text": " If an OpImageSample*
or OpImageFetch*
operation has an image operand of ConstOffset
then the offset value must be greater than or equal to minTexelOffset"
},
{
"vuid": "VUID-RuntimeSpirv-OpImageSample-06436",
"text": " If an OpImageSample*
or OpImageFetch*
operation has an image operand of ConstOffset
then the offset value must be less than or equal to maxTexelOffset"
}
],
"(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [
{
"vuid": "VUID-RuntimeSpirv-NonUniform-06274",
"text": " If an instruction loads from or stores to a resource (including atomics and image instructions) and the resource descriptor being accessed is not dynamically uniform, then the operand corresponding to that resource (e.g. the pointer or sampled image operand) must be decorated with NonUniform
."
}
],
"(VK_VERSION_1_1)+(VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types)": [
{
"vuid": "VUID-RuntimeSpirv-None-06275",
"text": " shaderSubgroupExtendedTypes
must be enabled for group operations to use 8-bit integer, 16-bit integer, 64-bit integer, 16-bit floating-point, and vectors of these types"
}
],
"(VK_VERSION_1_2)": [
{
"vuid": "VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06276",
"text": " If subgroupBroadcastDynamicId
is VK_TRUE
, and the shader module version is 1.5 or higher, the “Index” for OpGroupNonUniformQuadBroadcast
must be dynamically uniform within the derivative group. Otherwise, “Index” must be a constant."
},
{
"vuid": "VUID-RuntimeSpirv-subgroupBroadcastDynamicId-06277",
"text": " If subgroupBroadcastDynamicId
is VK_TRUE
, and the shader module version is 1.5 or higher, the “Id” for OpGroupNonUniformBroadcast
must be dynamically uniform within the subgroup. Otherwise, “Id” must be a constant."
}
],
"(VK_KHR_shader_atomic_int64)": [
{
"vuid": "VUID-RuntimeSpirv-None-06278",
"text": " shaderBufferInt64Atomics
must be enabled for 64-bit integer atomic operations to be supported on a Pointer with a Storage Class of StorageBuffer or Uniform."
},
{
"vuid": "VUID-RuntimeSpirv-None-06279",
"text": " shaderSharedInt64Atomics
must be enabled for 64-bit integer atomic operations to be supported on a Pointer with a Storage Class of Workgroup."
}
],
"(VK_EXT_shader_atomic_float)+!(VK_EXT_shader_atomic_float2)": [
{
"vuid": "VUID-RuntimeSpirv-None-06280",
"text": " shaderBufferFloat32Atomics
, or shaderBufferFloat32AtomicAdd
, or shaderBufferFloat64Atomics
, or shaderBufferFloat64AtomicAdd
must be enabled for floating-point atomic operations to be supported on a Pointer with a Storage Class of StorageBuffer."
},
{
"vuid": "VUID-RuntimeSpirv-None-06281",
"text": " shaderSharedFloat32Atomics
, or shaderSharedFloat32AtomicAdd
, or shaderSharedFloat64Atomics
, or shaderSharedFloat64AtomicAdd
must be enabled for floating-point atomic operations to be supported on a Pointer with a Storage Class of Workgroup."
},
{
"vuid": "VUID-RuntimeSpirv-None-06282",
"text": " shaderImageFloat32Atomics
or shaderImageFloat32AtomicAdd
must be enabled for 32-bit floating-point atomic operations to be supported on a Pointer with a Storage Class of Image."
},
{
"vuid": "VUID-RuntimeSpirv-None-06283",
"text": " sparseImageFloat32Atomics
or sparseImageFloat32AtomicAdd
must be enabled for 32-bit floating-point atomics to be supported on sparse images."
},
{
"vuid": "VUID-RuntimeSpirv-None-06335",
"text": " shaderBufferFloat32Atomics
, or shaderBufferFloat32AtomicAdd
, or shaderSharedFloat32Atomics
, or shaderSharedFloat32AtomicAdd
, or shaderImageFloat32Atomics
, or shaderImageFloat32AtomicAdd
must be enabled for 32-bit floating point atomic operations"
},
{
"vuid": "VUID-RuntimeSpirv-None-06336",
"text": " shaderBufferFloat64Atomics
, or shaderBufferFloat64AtomicAdd
, or shaderSharedFloat64Atomics
, or shaderSharedFloat64AtomicAdd
must be enabled for 64-bit floating point atomic operations"
}
],
"(VK_EXT_shader_atomic_float2)": [
{
"vuid": "VUID-RuntimeSpirv-None-06284",
"text": " shaderBufferFloat32Atomics
, or shaderBufferFloat32AtomicAdd
, or shaderBufferFloat64Atomics
, or shaderBufferFloat64AtomicAdd
, or shaderBufferFloat16Atomics
, or shaderBufferFloat16AtomicAdd
, or shaderBufferFloat16AtomicMinMax
, or shaderBufferFloat32AtomicMinMax
, or shaderBufferFloat64AtomicMinMax
must be enabled for floating-point atomic operations to be supported on a Pointer with a Storage Class of StorageBuffer."
},
{
"vuid": "VUID-RuntimeSpirv-None-06285",
"text": " shaderSharedFloat32Atomics
, or shaderSharedFloat32AtomicAdd
, or shaderSharedFloat64Atomics
, or shaderSharedFloat64AtomicAdd
, or shaderSharedFloat16Atomics
, or shaderSharedFloat16AtomicAdd
, or shaderSharedFloat16AtomicMinMax
, or shaderSharedFloat32AtomicMinMax
, or shaderSharedFloat64AtomicMinMax
must be enabled for floating-point atomic operations to be supported on a Pointer with a Storage Class of Workgroup."
},
{
"vuid": "VUID-RuntimeSpirv-None-06286",
"text": " shaderImageFloat32Atomics
, or shaderImageFloat32AtomicAdd
, or shaderImageFloat32AtomicMinMax
must be enabled for 32-bit floating-point atomic operations to be supported on a Pointer with a Storage Class of Image."
},
{
"vuid": "VUID-RuntimeSpirv-None-06287",
"text": " sparseImageFloat32Atomics
, or sparseImageFloat32AtomicAdd
, or sparseImageFloat32AtomicMinMax
must be enabled for 32-bit floating-point atomics to be supported on sparse images."
},
{
"vuid": "VUID-RuntimeSpirv-None-06337",
"text": " shaderBufferFloat16Atomics
, or shaderBufferFloat16AtomicAdd
, or shaderBufferFloat16AtomicMinMax
, or shaderSharedFloat16Atomics
, or shaderSharedFloat16AtomicAdd
, or shaderSharedFloat16AtomicMinMax
must be enabled for 16-bit floating point atomic operations"
},
{
"vuid": "VUID-RuntimeSpirv-None-06338",
"text": " shaderBufferFloat32Atomics
, or shaderBufferFloat32AtomicAdd
, or shaderSharedFloat32Atomics
, or shaderSharedFloat32AtomicAdd
, or shaderImageFloat32Atomics
, or shaderImageFloat32AtomicAdd
or shaderBufferFloat32AtomicMinMax
, or shaderSharedFloat32AtomicMinMax
, or shaderImageFloat32AtomicMinMax
must be enabled for 32-bit floating point atomic operations"
},
{
"vuid": "VUID-RuntimeSpirv-None-06339",
"text": " shaderBufferFloat64Atomics
, or shaderBufferFloat64AtomicAdd
, or shaderSharedFloat64Atomics
, or shaderSharedFloat64AtomicAdd
, or shaderBufferFloat64AtomicMinMax
, or shaderSharedFloat64AtomicMinMax
, must be enabled for 64-bit floating point atomic operations"
}
],
"(VK_EXT_shader_image_atomic_int64)": [
{
"vuid": "VUID-RuntimeSpirv-None-06288",
"text": " shaderImageInt64Atomics
must be enabled for 64-bit integer atomic operations to be supported on a Pointer with a Storage Class of Image."
}
],
"(VK_VERSION_1_2,VK_KHR_shader_float_controls)": [
{
"vuid": "VUID-RuntimeSpirv-denormBehaviorIndependence-06289",
"text": " If denormBehaviorIndependence
is VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
, then the entry point must use the same denormals execution mode for both 16-bit and 64-bit floating-point types."
},
{
"vuid": "VUID-RuntimeSpirv-denormBehaviorIndependence-06290",
"text": " If denormBehaviorIndependence
is VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
, then the entry point must use the same denormals execution mode for all floating-point types."
},
{
"vuid": "VUID-RuntimeSpirv-roundingModeIndependence-06291",
"text": " If roundingModeIndependence
is VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY
, then the entry point must use the same rounding execution mode for both 16-bit and 64-bit floating-point types."
},
{
"vuid": "VUID-RuntimeSpirv-roundingModeIndependence-06292",
"text": " If roundingModeIndependence
is VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE
, then the entry point must use the same rounding execution mode for all floating-point types."
},
{
"vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat16-06293",
"text": " If shaderSignedZeroInfNanPreserveFloat16
is VK_FALSE
, then SignedZeroInfNanPreserve
for 16-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat32-06294",
"text": " If shaderSignedZeroInfNanPreserveFloat32
is VK_FALSE
, then SignedZeroInfNanPreserve
for 32-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderSignedZeroInfNanPreserveFloat64-06295",
"text": " If shaderSignedZeroInfNanPreserveFloat64
is VK_FALSE
, then SignedZeroInfNanPreserve
for 64-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDenormPreserveFloat16-06296",
"text": " If shaderDenormPreserveFloat16
is VK_FALSE
, then DenormPreserve
for 16-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDenormPreserveFloat32-06297",
"text": " If shaderDenormPreserveFloat32
is VK_FALSE
, then DenormPreserve
for 32-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDenormPreserveFloat64-06298",
"text": " If shaderDenormPreserveFloat64
is VK_FALSE
, then DenormPreserve
for 64-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat16-06299",
"text": " If shaderDenormFlushToZeroFloat16
is VK_FALSE
, then DenormFlushToZero
for 16-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat32-06300",
"text": " If shaderDenormFlushToZeroFloat32
is VK_FALSE
, then DenormFlushToZero
for 32-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderDenormFlushToZeroFloat64-06301",
"text": " If shaderDenormFlushToZeroFloat64
is VK_FALSE
, then DenormFlushToZero
for 64-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTEFloat16-06302",
"text": " If shaderRoundingModeRTEFloat16
is VK_FALSE
, then RoundingModeRTE
for 16-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTEFloat32-06303",
"text": " If shaderRoundingModeRTEFloat32
is VK_FALSE
, then RoundingModeRTE
for 32-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTEFloat64-06304",
"text": " If shaderRoundingModeRTEFloat64
is VK_FALSE
, then RoundingModeRTE
for 64-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTZFloat16-06305",
"text": " If shaderRoundingModeRTZFloat16
is VK_FALSE
, then RoundingModeRTZ
for 16-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTZFloat32-06306",
"text": " If shaderRoundingModeRTZFloat32
is VK_FALSE
, then RoundingModeRTZ
for 32-bit floating-point type must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderRoundingModeRTZFloat64-06307",
"text": " If shaderRoundingModeRTZFloat64
is VK_FALSE
, then RoundingModeRTZ
for 64-bit floating-point type must not be used."
}
],
"(VK_EXT_transform_feedback)": [
{
"vuid": "VUID-RuntimeSpirv-Offset-06308",
"text": " The Offset
plus size of the type of each variable, in the output interface of the entry point being compiled, decorated with XfbBuffer
must not be greater than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBufferDataSize
"
},
{
"vuid": "VUID-RuntimeSpirv-XfbBuffer-06309",
"text": " For any given XfbBuffer
value, define the buffer data size to be smallest number of bytes such that, for all outputs decorated with the same XfbBuffer
value, the size of the output interface variable plus the Offset
is less than or equal to the buffer data size. For a given Stream
, the sum of all the buffer data sizes for all buffers writing to that stream the must not exceed VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreamDataSize
"
},
{
"vuid": "VUID-RuntimeSpirv-OpEmitStreamVertex-06310",
"text": " The Stream value to OpEmitStreamVertex
and OpEndStreamPrimitive
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-RuntimeSpirv-transformFeedbackStreamsLinesTriangles-06311",
"text": " If the geometry shader emits to more than one vertex stream and VkPhysicalDeviceTransformFeedbackPropertiesEXT
::transformFeedbackStreamsLinesTriangles
is VK_FALSE
, then execution mode must be OutputPoints
"
},
{
"vuid": "VUID-RuntimeSpirv-Stream-06312",
"text": " The stream number value to Stream
must be less than VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackStreams
"
},
{
"vuid": "VUID-RuntimeSpirv-XfbStride-06313",
"text": " The XFB Stride value to XfbStride
must be less than or equal to VkPhysicalDeviceTransformFeedbackPropertiesEXT
::maxTransformFeedbackBufferDataStride
"
}
],
"(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [
{
"vuid": "VUID-RuntimeSpirv-PhysicalStorageBuffer64-06314",
"text": " If the PhysicalStorageBuffer64
addressing model is enabled any load or store through a physical pointer type must be aligned to a multiple of the size of the largest scalar type in the pointed-to type."
},
{
"vuid": "VUID-RuntimeSpirv-PhysicalStorageBuffer64-06315",
"text": " If the PhysicalStorageBuffer64
addressing model is enabled the pointer value of a memory access instruction must be at least as aligned as specified by the Aligned
memory access operand."
}
],
"(VK_NV_cooperative_matrix)": [
{
"vuid": "VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06316",
"text": " For OpTypeCooperativeMatrixNV
, the component type, scope, number of rows, and number of columns must match one of the matrices in any of the supported VkCooperativeMatrixPropertiesNV."
},
{
"vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixMulAddNV-06317",
"text": " For OpCooperativeMatrixMulAddNV
, the type of A
must have VkCooperativeMatrixPropertiesNV::MSize
rows and VkCooperativeMatrixPropertiesNV::KSize
columns and have a component type that matches VkCooperativeMatrixPropertiesNV::AType
."
},
{
"vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixMulAddNV-06318",
"text": " For OpCooperativeMatrixMulAddNV
, the type of B
must have VkCooperativeMatrixPropertiesNV::KSize
rows and VkCooperativeMatrixPropertiesNV::NSize
columns and have a component type that matches VkCooperativeMatrixPropertiesNV::BType
."
},
{
"vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixMulAddNV-06319",
"text": " For OpCooperativeMatrixMulAddNV
, the type of C
must have VkCooperativeMatrixPropertiesNV::MSize
rows and VkCooperativeMatrixPropertiesNV::NSize
columns and have a component type that matches VkCooperativeMatrixPropertiesNV::CType
."
},
{
"vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixMulAddNV-06320",
"text": " For OpCooperativeMatrixMulAddNV
, the type of Result
must have VkCooperativeMatrixPropertiesNV::MSize
rows and VkCooperativeMatrixPropertiesNV::NSize
columns and have a component type that matches VkCooperativeMatrixPropertiesNV::DType
."
},
{
"vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixMulAddNV-06321",
"text": " For OpCooperativeMatrixMulAddNV
, the type of A
, B
, C
, and Result
must all have a scope of scope
."
},
{
"vuid": "VUID-RuntimeSpirv-OpTypeCooperativeMatrixNV-06322",
"text": " OpTypeCooperativeMatrixNV
and OpCooperativeMatrix*
instructions must not be used in shader stages not included in VkPhysicalDeviceCooperativeMatrixPropertiesNV::cooperativeMatrixSupportedStages
."
},
{
"vuid": "VUID-RuntimeSpirv-OpCooperativeMatrixLoadNV-06324",
"text": " For OpCooperativeMatrixLoadNV
and OpCooperativeMatrixStoreNV
instructions, the Pointer
and Stride
operands must be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending on ColumnMajor
) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)."
}
],
"(VK_NV_mesh_shader)": [
{
"vuid": "VUID-RuntimeSpirv-MeshNV-07113",
"text": " For mesh shaders using the MeshNV
{ExecutionModel} the OutputVertices
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxMeshOutputVertices
."
},
{
"vuid": "VUID-RuntimeSpirv-MeshNV-07114",
"text": " For mesh shaders using the MeshNV
{ExecutionModel} the OutputPrimitivesNV
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV
::maxMeshOutputPrimitives
."
}
],
"(VK_EXT_mesh_shader)": [
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07115",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the OutputVertices
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshOutputVertices
."
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07332",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the “Vertex Count” operand of OpSetMeshOutputsEXT
must be less than or equal to OutputVertices
OpExecutionMode
"
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07116",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the OutputPrimitivesEXT
OpExecutionMode
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshOutputPrimitives
."
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07333",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the “Primitive Count” operand of OpSetMeshOutputsEXT
must be less than or equal to OutputPrimitivesEXT
OpExecutionMode
"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07117",
"text": " In task shaders using the TaskEXT
{ExecutionModel} OpEmitMeshTasksEXT
must be called exactly once under dynamically uniform conditions"
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07118",
"text": " In mesh shaders using the MeshEXT
{ExecutionModel} OpSetMeshOutputsEXT
must be called at most once under dynamically uniform conditions"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07291",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the x
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupSize
[0]"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07292",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the y
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupSize
[1]"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07293",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the z
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupSize
[2]"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07294",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the product of x
size, y
size, and z
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxTaskWorkGroupInvocations
"
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07295",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the x
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupSize
[0]"
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07296",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the y
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupSize
[1]"
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07297",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the z
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupSize
[2]"
},
{
"vuid": "VUID-RuntimeSpirv-MeshEXT-07298",
"text": " For mesh shaders using the MeshEXT
{ExecutionModel} the product of x
size, y
size, and z
size in LocalSize
or LocalSizeId
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupInvocations
"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07299",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the value of the “Group Count X” operand of OpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[0]"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07300",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the value of the “Group Count Y” operand of OpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[1]"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07301",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the value of the “Group Count Z” operand of OpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupCount
[2]"
},
{
"vuid": "VUID-RuntimeSpirv-TaskEXT-07302",
"text": " In task shaders using the TaskEXT
{ExecutionModel} the product of the “Group Count” operands of OpEmitMeshTasksEXT
must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesEXT
::maxMeshWorkGroupTotalCount
"
}
],
"(VK_KHR_portability_subset)": [
{
"vuid": "VUID-RuntimeSpirv-shaderSampleRateInterpolationFunctions-06325",
"text": " If the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::shaderSampleRateInterpolationFunctions
is VK_FALSE
, then GLSL.std.450
fragment interpolation functions are not supported by the implementation and OpCapability
must not be set to InterpolationFunction
."
},
{
"vuid": "VUID-RuntimeSpirv-tessellationShader-06326",
"text": " If tessellationShader
is enabled, and the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::tessellationIsolines
is VK_FALSE
, then OpExecutionMode
must not be set to IsoLines
."
},
{
"vuid": "VUID-RuntimeSpirv-tessellationShader-06327",
"text": " If tessellationShader
is enabled, and the VK_KHR_portability_subset
extension is enabled, and VkPhysicalDevicePortabilitySubsetFeaturesKHR::tessellationPointMode
is VK_FALSE
, then OpExecutionMode
must not be set to PointMode
."
}
],
"(VK_KHR_8bit_storage)": [
{
"vuid": "VUID-RuntimeSpirv-storageBuffer8BitAccess-06328",
"text": " If storageBuffer8BitAccess
is VK_FALSE
, then objects containing an 8-bit integer element must not have storage class of StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer."
},
{
"vuid": "VUID-RuntimeSpirv-uniformAndStorageBuffer8BitAccess-06329",
"text": " If uniformAndStorageBuffer8BitAccess
is VK_FALSE
, then objects in the Uniform storage class with the Block decoration must not have an 8-bit integer member."
},
{
"vuid": "VUID-RuntimeSpirv-storagePushConstant8-06330",
"text": " If storagePushConstant8
is VK_FALSE
, then objects containing an 8-bit integer element must not have storage class of PushConstant."
}
],
"(VK_KHR_16bit_storage)": [
{
"vuid": "VUID-RuntimeSpirv-storageBuffer16BitAccess-06331",
"text": " If storageBuffer16BitAccess
is VK_FALSE
, then objects containing 16-bit integer or 16-bit floating-point elements must not have storage class of StorageBuffer, ShaderRecordBufferKHR, or PhysicalStorageBuffer."
},
{
"vuid": "VUID-RuntimeSpirv-uniformAndStorageBuffer16BitAccess-06332",
"text": " If uniformAndStorageBuffer16BitAccess
is VK_FALSE
, then objects in the Uniform storage class with the Block decoration must not have 16-bit integer or 16-bit floating-point members."
},
{
"vuid": "VUID-RuntimeSpirv-storagePushConstant16-06333",
"text": " If storagePushConstant16
is VK_FALSE
, then objects containing 16-bit integer or 16-bit floating-point elements must not have storage class of PushConstant."
},
{
"vuid": "VUID-RuntimeSpirv-storageInputOutput16-06334",
"text": " If storageInputOutput16
is VK_FALSE
, then objects containing 16-bit integer or 16-bit floating-point elements must not have storage class of Input or Output."
}
],
"(VK_VERSION_1_1)": [
{
"vuid": "VUID-RuntimeSpirv-None-06343",
"text": " Group operations with subgroup scope must not be used if the shader stage is not in subgroupSupportedStages."
}
],
"(VK_KHR_ray_query)": [
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06348",
"text": " For OpRayQueryInitializeKHR
instructions, all components of the RayOrigin
and RayDirection
operands must be finite floating-point values."
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06349",
"text": " For OpRayQueryInitializeKHR
instructions, the RayTmin
and RayTmax
operands must be non-negative floating-point values."
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06350",
"text": " For OpRayQueryInitializeKHR
instructions, the RayTmin
operand must be less than or equal to the RayTmax
operand."
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06351",
"text": " For OpRayQueryInitializeKHR
instructions, RayOrigin
, RayDirection
, RayTmin
, and RayTmax
operands must not contain NaNs."
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06352",
"text": " For OpRayQueryInitializeKHR
instructions, Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure."
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06889",
"text": " For OpRayQueryInitializeKHR
instructions, the Rayflags
operand must not contain both SkipTrianglesKHR
and SkipAABBsKHR
"
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06890",
"text": " For OpRayQueryInitializeKHR
instructions, the Rayflags
operand must not contain more than one of SkipTrianglesKHR
, CullBackFacingTrianglesKHR
, and CullFrontFacingTrianglesKHR
"
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryInitializeKHR-06891",
"text": " For OpRayQueryInitializeKHR
instructions, the Rayflags
operand must not contain more than one of OpaqueKHR
, NoOpaqueKHR
, CullOpaqueKHR
, and CullNoOpaqueKHR
"
},
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06353",
"text": " For OpRayQueryGenerateIntersectionKHR
instructions, Hit
T
must satisfy the condition RayTmin
{leq} Hit
T
{leq} RayTmax
, where RayTmin
is equal to the value returned by OpRayQueryGetRayTMinKHR
with the same ray query object, and RayTmax
is equal to the value of OpRayQueryGetIntersectionTKHR
for the current committed intersection with the same ray query object."
}
],
"(VK_KHR_ray_query)+(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-RuntimeSpirv-OpRayQueryGenerateIntersectionKHR-06354",
"text": " For OpRayQueryGenerateIntersectionKHR
instructions, Acceleration
Structure
must not be built with VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
in flags
."
}
],
"(VK_KHR_ray_tracing_pipeline)": [
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06355",
"text": " For OpTraceRayKHR
instructions, all components of the RayOrigin
and RayDirection
operands must be finite floating-point values."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06356",
"text": " For OpTraceRayKHR
instructions, the RayTmin
and RayTmax
operands must be non-negative floating-point values."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06552",
"text": " For OpTraceRayKHR
instructions, the Rayflags
operand must not contain both SkipTrianglesKHR
and SkipAABBsKHR
"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06892",
"text": " For OpTraceRayKHR
instructions, the Rayflags
operand must not contain more than one of SkipTrianglesKHR
, CullBackFacingTrianglesKHR
, and CullFrontFacingTrianglesKHR
"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06893",
"text": " For OpTraceRayKHR
instructions, the Rayflags
operand must not contain more than one of OpaqueKHR
, NoOpaqueKHR
, CullOpaqueKHR
, and CullNoOpaqueKHR
"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06553",
"text": " For OpTraceRayKHR
instructions, if the Rayflags
operand contains SkipTrianglesKHR
, the pipeline must not have been created with VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR
set"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06554",
"text": " For OpTraceRayKHR
instructions, if the Rayflags
operand contains SkipAABBsKHR
, the pipeline must not have been created with VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR
set"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06357",
"text": " For OpTraceRayKHR
instructions, the RayTmin
operand must be less than or equal to the RayTmax
operand."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06358",
"text": " For OpTraceRayKHR
instructions, RayOrigin
, RayDirection
, RayTmin
, and RayTmax
operands must not contain NaNs."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06359",
"text": " For OpTraceRayKHR
instructions, Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure."
},
{
"vuid": "VUID-RuntimeSpirv-OpReportIntersectionKHR-06998",
"text": " The value of the “Hit Kind” operand of OpReportIntersectionKHR
must be in the range [0,127]"
}
],
"(VK_NV_ray_tracing_motion_blur)": [
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayKHR-06360",
"text": " For OpTraceRayKHR
instructions, if Acceleration
Structure
was built with VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
in flags
, the pipeline must have been created with VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
set"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06361",
"text": " For OpTraceRayMotionNV
instructions, all components of the RayOrigin
and RayDirection
operands must be finite floating-point values."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06362",
"text": " For OpTraceRayMotionNV
instructions, the RayTmin
and RayTmax
operands must be non-negative floating-point values."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06363",
"text": " For OpTraceRayMotionNV
instructions, the RayTmin
operand must be less than or equal to the RayTmax
operand."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06364",
"text": " For OpTraceRayMotionNV
instructions, RayOrigin
, RayDirection
, RayTmin
, and RayTmax
operands must not contain NaNs."
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06365",
"text": " For OpTraceRayMotionNV
instructions, Acceleration
Structure
must be an acceleration structure built as a top-level acceleration structure with VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV
in flags
"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06366",
"text": " For OpTraceRayMotionNV
instructions the time
operand must be between 0.0 and 1.0"
},
{
"vuid": "VUID-RuntimeSpirv-OpTraceRayMotionNV-06367",
"text": " For OpTraceRayMotionNV
instructions the pipeline must have been created with VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV
set"
}
],
"!(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-RuntimeSpirv-LocalSizeId-06433",
"text": " The execution mode LocalSizeId
must not be used"
},
{
"vuid": "VUID-RuntimeSpirv-OpTypeVector-06816",
"text": " Any OpTypeVector
output interface variables must not have a higher Component
Count
than a matching OpTypeVector
input interface variable"
}
],
"(VK_VERSION_1_3,VK_KHR_maintenance4)": [
{
"vuid": "VUID-RuntimeSpirv-LocalSizeId-06434",
"text": " If execution mode LocalSizeId
is used, maintenance4
must be enabled"
},
{
"vuid": "VUID-RuntimeSpirv-maintenance4-06817",
"text": " If maintenance4
is not enabled, any OpTypeVector
output interface variables must not have a higher Component
Count
than a matching OpTypeVector
input interface variable"
}
],
"(VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory)": [
{
"vuid": "VUID-RuntimeSpirv-shaderZeroInitializeWorkgroupMemory-06372",
"text": " If shaderZeroInitializeWorkgroupMemory
is not enabled, any OpVariable
with Workgroup as its Storage Class must not have an Initializer
operand"
}
],
"!(VK_VERSION_1_3,VK_KHR_zero_initialize_workgroup_memory)": [
{
"vuid": "VUID-RuntimeSpirv-OpVariable-06373",
"text": " Any OpVariable
with Workgroup as its Storage Class must not have an Initializer
operand"
}
],
"(VK_QCOM_render_pass_shader_resolve)": [
{
"vuid": "VUID-RuntimeSpirv-SampleRateShading-06378",
"text": " If the subpass description contains VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM
, then the SPIR-V fragment shader Capability SampleRateShading
must not be enabled."
}
],
"(VK_KHR_shader_subgroup_uniform_control_flow)": [
{
"vuid": "VUID-RuntimeSpirv-SubgroupUniformControlFlowKHR-06379",
"text": " The execution mode SubgroupUniformControlFlowKHR
must not be applied to an entry point unless shaderSubgroupUniformControlFlow
is enabled and the corresponding shader stage bit is set in subgroup supportedStages
and the entry point does not execute any invocation repack instructions."
}
],
"(VK_AMD_shader_early_and_late_fragment_tests)": [
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06767",
"text": " If shaderEarlyAndLateFragmentTests
is not enabled, the EarlyAndLateFragmentTestsEXT
Execution
Mode
must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06768",
"text": " If shaderEarlyAndLateFragmentTests
feature is not enabled, the StencilRefUnchangedFrontEXT
Execution
Mode
must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06769",
"text": " If shaderEarlyAndLateFragmentTests
is not enabled, the StencilRefUnchangedBackEXT
Execution
Mode
must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06770",
"text": " If shaderEarlyAndLateFragmentTests
is not enabled, the StencilRefGreaterFrontEXT
Execution
Mode
must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06771",
"text": " If shaderEarlyAndLateFragmentTests
is not enabled, the StencilRefGreaterBackEXT
Execution
Mode
must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06772",
"text": " If shaderEarlyAndLateFragmentTests
is not enabled, the StencilRefLessFrontEXT
Execution
Mode
must not be used."
},
{
"vuid": "VUID-RuntimeSpirv-shaderEarlyAndLateFragmentTests-06773",
"text": " If shaderEarlyAndLateFragmentTests
is not enabled, the StencilRefLessBackEXT
Execution
Mode
must not be used."
}
],
"(VK_QCOM_image_processing)": [
{
"vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06979",
"text": " If an OpImageWeightedSampleQCOM
operation is used, then the Texture
Sampled
Image
and Weight
Image
parameters must both be dynamically uniform for the quad."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06980",
"text": " If an OpImageWeightedSampleQCOM
operation is used, then the Weight
Image
parameter must be of storage class UniformConstant
and type OpTypeImage
with Depth
=0, Dim
=2D
, Arrayed
=1, MS
=0, and Sampled
=1."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06981",
"text": " If an OpImageWeightedSampleQCOM
operation is used, then the Weight
Image
parameter must be decorated with WeightTextureQCOM
."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSADQCOM-06982",
"text": " If an OpImageBlockMatchSADQCOM
or OpImageBlockMatchSSDQCOM
operation is used, then the target
sampled
image
, reference
sampled
image
, and Block
Size
parameters must both be dynamically uniform for the quad."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06983",
"text": " If an OpImageBlockMatchSSDQCOM
or OpImageBlockMatchSADQCOM
operation is used, then target
sampled
image
and reference
sampled
image
parameters must be of storage class UniformConstant
and type OpTypeImage
with Depth
=0, Dim
=2D
, Arrayed
=0, MS
=0, and Sampled
=1."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06984",
"text": " If an OpImageBlockMatchSSDQCOM
or OpImageBlockMatchSADQCOM
operation is used, then the target
sampled
image
and reference
sampled
image
parameters must be decorated with BlockMatchTextureQCOM
."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06985",
"text": " If an OpImageBlockMatchSSDQCOM
or OpImageBlockMatchSADQCOM
operation is used, then target
sampled
image
and reference
sampled
image
parameters must have been created using an identical sampler object."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06986",
"text": " If an OpImageBlockMatchSSDQCOM
or OpImageBlockMatchSADQCOM
operation is used, then target
sampled
image
and reference
sampled
image
parameters must have been created with sampler object with unnormalizeCordinates
equal to VK_TRUE
."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06987",
"text": " If an OpImageBlockMatchSSDQCOM
or OpImageBlockMatchSADQCOM
operation is used, then target
sampled
image
and reference
sampled
image
parameters must have been created with sampler object with unnormalizeCordinates
equal to VK_TRUE
."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBlockMatchSSDQCOM-06988",
"text": " If an OpImageBlockMatchSSDQCOM
or OpImageBlockMatchSADQCOM
operation is used, then Block
Size
less than or equal to maxBlockMatchRegion."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06989",
"text": " If an OpImageBoxFilterQCOM
operation is used, then Box
Size.y
must be equal to or greater than 1.0 and less than or equal to maxBoxFilterBlockSize.height
."
},
{
"vuid": "VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06990",
"text": " If an OpImageBoxFilterQCOM
operation is used, then Sampled
Texture
Image
and Box
Size
parameters must be dynamically uniform."
}
]
},
"vkCreateCuFunctionNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-vkCreateCuFunctionNVX-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateCuFunctionNVX-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkCuFunctionCreateInfoNVX structure"
},
{
"vuid": "VUID-vkCreateCuFunctionNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateCuFunctionNVX-pFunction-parameter",
"text": " pFunction
must be a valid pointer to a VkCuFunctionNVX handle"
}
]
},
"VkCuFunctionCreateInfoNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-VkCuFunctionCreateInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX
"
},
{
"vuid": "VUID-VkCuFunctionCreateInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCuFunctionCreateInfoNVX-module-parameter",
"text": " module
must be a valid VkCuModuleNVX handle"
},
{
"vuid": "VUID-VkCuFunctionCreateInfoNVX-pName-parameter",
"text": " pName
must be a null-terminated UTF-8 string"
}
]
},
"vkDestroyCuFunctionNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-vkDestroyCuFunctionNVX-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyCuFunctionNVX-function-parameter",
"text": " function
must be a valid VkCuFunctionNVX handle"
},
{
"vuid": "VUID-vkDestroyCuFunctionNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyCuFunctionNVX-function-parent",
"text": " function
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCreateCuModuleNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-vkCreateCuModuleNVX-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkCreateCuModuleNVX-pCreateInfo-parameter",
"text": " pCreateInfo
must be a valid pointer to a valid VkCuModuleCreateInfoNVX structure"
},
{
"vuid": "VUID-vkCreateCuModuleNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkCreateCuModuleNVX-pModule-parameter",
"text": " pModule
must be a valid pointer to a VkCuModuleNVX handle"
}
]
},
"VkCuModuleCreateInfoNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-VkCuModuleCreateInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX
"
},
{
"vuid": "VUID-VkCuModuleCreateInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCuModuleCreateInfoNVX-pData-parameter",
"text": " pData
must be a valid pointer to an array of dataSize
bytes"
},
{
"vuid": "VUID-VkCuModuleCreateInfoNVX-dataSize-arraylength",
"text": " dataSize
must be greater than 0
"
}
]
},
"vkDestroyCuModuleNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-vkDestroyCuModuleNVX-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkDestroyCuModuleNVX-module-parameter",
"text": " module
must be a valid VkCuModuleNVX handle"
},
{
"vuid": "VUID-vkDestroyCuModuleNVX-pAllocator-parameter",
"text": " If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure"
},
{
"vuid": "VUID-vkDestroyCuModuleNVX-module-parent",
"text": " module
must have been created, allocated, or retrieved from device
"
}
]
},
"vkCmdCuLaunchKernelNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-vkCmdCuLaunchKernelNVX-commandBuffer-parameter",
"text": " commandBuffer
must be a valid VkCommandBuffer handle"
},
{
"vuid": "VUID-vkCmdCuLaunchKernelNVX-pLaunchInfo-parameter",
"text": " pLaunchInfo
must be a valid pointer to a valid VkCuLaunchInfoNVX structure"
},
{
"vuid": "VUID-vkCmdCuLaunchKernelNVX-commandBuffer-recording",
"text": " commandBuffer
must be in the recording state"
},
{
"vuid": "VUID-vkCmdCuLaunchKernelNVX-commandBuffer-cmdpool",
"text": " The VkCommandPool
that commandBuffer
was allocated from must support graphics, or compute operations"
},
{
"vuid": "VUID-vkCmdCuLaunchKernelNVX-videocoding",
"text": " This command must only be called outside of a video coding scope"
}
]
},
"VkCuLaunchInfoNVX": {
"(VK_NVX_binary_import)": [
{
"vuid": "VUID-VkCuLaunchInfoNVX-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX
"
},
{
"vuid": "VUID-VkCuLaunchInfoNVX-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkCuLaunchInfoNVX-function-parameter",
"text": " function
must be a valid VkCuFunctionNVX handle"
},
{
"vuid": "VUID-VkCuLaunchInfoNVX-pParams-parameter",
"text": " If paramCount
is not 0
, pParams
must be a valid pointer to an array of paramCount
bytes"
},
{
"vuid": "VUID-VkCuLaunchInfoNVX-pExtras-parameter",
"text": " If extraCount
is not 0
, pExtras
must be a valid pointer to an array of extraCount
bytes"
}
]
},
"VkPhysicalDeviceAmigoProfilingFeaturesSEC": {
"(VK_SEC_amigo_profiling)": [
{
"vuid": "VUID-VkPhysicalDeviceAmigoProfilingFeaturesSEC-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC
"
}
]
},
"VkAmigoProfilingSubmitInfoSEC": {
"(VK_SEC_amigo_profiling)": [
{
"vuid": "VUID-VkAmigoProfilingSubmitInfoSEC-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC
"
}
]
},
"vkGetDescriptorSetLayoutHostMappingInfoVALVE": {
"(VK_VALVE_descriptor_set_host_mapping)": [
{
"vuid": "VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pBindingReference-parameter",
"text": " pBindingReference
must be a valid pointer to a valid VkDescriptorSetBindingReferenceVALVE structure"
},
{
"vuid": "VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-pHostMapping-parameter",
"text": " pHostMapping
must be a valid pointer to a VkDescriptorSetLayoutHostMappingInfoVALVE structure"
}
]
},
"vkGetDescriptorSetHostMappingVALVE": {
"(VK_VALVE_descriptor_set_host_mapping)": [
{
"vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter",
"text": " device
must be a valid VkDevice handle"
},
{
"vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-descriptorSet-parameter",
"text": " descriptorSet
must be a valid VkDescriptorSet handle"
},
{
"vuid": "VUID-vkGetDescriptorSetHostMappingVALVE-ppData-parameter",
"text": " ppData
must be a valid pointer to a pointer value"
}
]
},
"VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE": {
"(VK_VALVE_descriptor_set_host_mapping)": [
{
"vuid": "VUID-VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE
"
}
]
},
"VkDescriptorSetBindingReferenceVALVE": {
"(VK_VALVE_descriptor_set_host_mapping)": [
{
"vuid": "VUID-VkDescriptorSetBindingReferenceVALVE-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE
"
},
{
"vuid": "VUID-VkDescriptorSetBindingReferenceVALVE-pNext-pNext",
"text": " pNext
must be NULL
"
},
{
"vuid": "VUID-VkDescriptorSetBindingReferenceVALVE-descriptorSetLayout-parameter",
"text": " descriptorSetLayout
must be a valid VkDescriptorSetLayout handle"
}
]
},
"VkDescriptorSetLayoutHostMappingInfoVALVE": {
"(VK_VALVE_descriptor_set_host_mapping)": [
{
"vuid": "VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-sType-sType",
"text": " sType
must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE
"
},
{
"vuid": "VUID-VkDescriptorSetLayoutHostMappingInfoVALVE-pNext-pNext",
"text": " pNext
must be NULL
"
}
]
}
}
}