diff --git a/layers/VkLayer_khronos_validation.json.in b/layers/VkLayer_khronos_validation.json.in index b973157c4f1..04f5d9365e3 100644 --- a/layers/VkLayer_khronos_validation.json.in +++ b/layers/VkLayer_khronos_validation.json.in @@ -4,7 +4,7 @@ "name": "@JSON_LAYER_NAME@", "type": "GLOBAL", "library_path": "@JSON_LIBRARY_PATH@", - "api_version": "1.4.305", + "api_version": "1.4.306", "implementation_version": "1", "description": "Khronos Validation Layer", "introduction": "The main, comprehensive Khronos validation layer.\n\nVulkan is an Explicit API, enabling direct control over how GPUs actually work. By design, minimal error checking is done inside a Vulkan driver. Applications have full control and responsibility for correct operation. Any errors in how Vulkan is used can result in a crash. \n\nThe Khronos Validation Layer can be enabled to assist development by enabling developers to verify their applications correctly use the Vulkan API.", diff --git a/layers/vulkan/generated/best_practices.cpp b/layers/vulkan/generated/best_practices.cpp index 01c6ec9b7d0..c96719ee3ad 100644 --- a/layers/vulkan/generated/best_practices.cpp +++ b/layers/vulkan/generated/best_practices.cpp @@ -3089,6 +3089,29 @@ void BestPractices::PostCallRecordGetPhysicalDeviceCooperativeMatrixFlexibleDime } } +#ifdef VK_USE_PLATFORM_METAL_EXT +void BestPractices::PostCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) { + BaseClass::PostCallRecordGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle, record_obj); + + if (record_obj.result < VK_SUCCESS) { + LogErrorCode(record_obj); + } +} + +void BestPractices::PostCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) { + BaseClass::PostCallRecordGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties, + record_obj); + + if (record_obj.result < VK_SUCCESS) { + LogErrorCode(record_obj); + } +} +#endif // VK_USE_PLATFORM_METAL_EXT + void BestPractices::PostCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, diff --git a/layers/vulkan/generated/best_practices.h b/layers/vulkan/generated/best_practices.h index 32b3844b104..61fb142d7aa 100644 --- a/layers/vulkan/generated/best_practices.h +++ b/layers/vulkan/generated/best_practices.h @@ -1026,6 +1026,16 @@ void PostCallRecordGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertie VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties, const RecordObject& record_obj) override; +#ifdef VK_USE_PLATFORM_METAL_EXT +void PostCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) override; + +void PostCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) override; + +#endif // VK_USE_PLATFORM_METAL_EXT void PostCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/chassis.cpp b/layers/vulkan/generated/chassis.cpp index d580a8c83a3..85d7bc6d24c 100644 --- a/layers/vulkan/generated/chassis.cpp +++ b/layers/vulkan/generated/chassis.cpp @@ -25691,6 +25691,90 @@ VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexibleDimensi return result; } +#ifdef VK_USE_PLATFORM_METAL_EXT +VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle) { + VVL_ZoneScoped; + + auto device_dispatch = vvl::dispatch::GetData(device); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkGetMemoryMetalHandleEXT, VulkanTypedHandle(device, kVulkanObjectTypeDevice)); + { + VVL_ZoneScopedN("PreCallValidate"); + for (const auto& vo : device_dispatch->intercept_vectors[InterceptIdPreCallValidateGetMemoryMetalHandleEXT]) { + auto lock = vo->ReadLock(); + skip |= vo->PreCallValidateGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle, error_obj); + if (skip) return VK_ERROR_VALIDATION_FAILED_EXT; + } + } + RecordObject record_obj(vvl::Func::vkGetMemoryMetalHandleEXT); + { + VVL_ZoneScopedN("PreCallRecord"); + for (auto& vo : device_dispatch->intercept_vectors[InterceptIdPreCallRecordGetMemoryMetalHandleEXT]) { + auto lock = vo->WriteLock(); + vo->PreCallRecordGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle, record_obj); + } + } + VkResult result; + { + VVL_ZoneScopedN("Dispatch"); + result = device_dispatch->GetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle); + } + record_obj.result = result; + { + VVL_ZoneScopedN("PostCallRecord"); + for (auto& vo : device_dispatch->intercept_vectors[InterceptIdPostCallRecordGetMemoryMetalHandleEXT]) { + auto lock = vo->WriteLock(); + vo->PostCallRecordGetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle, record_obj); + } + } + return result; +} + +VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties) { + VVL_ZoneScoped; + + auto device_dispatch = vvl::dispatch::GetData(device); + bool skip = false; + ErrorObject error_obj(vvl::Func::vkGetMemoryMetalHandlePropertiesEXT, VulkanTypedHandle(device, kVulkanObjectTypeDevice)); + { + VVL_ZoneScopedN("PreCallValidate"); + for (const auto& vo : device_dispatch->intercept_vectors[InterceptIdPreCallValidateGetMemoryMetalHandlePropertiesEXT]) { + auto lock = vo->ReadLock(); + skip |= vo->PreCallValidateGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties, + error_obj); + if (skip) return VK_ERROR_VALIDATION_FAILED_EXT; + } + } + RecordObject record_obj(vvl::Func::vkGetMemoryMetalHandlePropertiesEXT); + { + VVL_ZoneScopedN("PreCallRecord"); + for (auto& vo : device_dispatch->intercept_vectors[InterceptIdPreCallRecordGetMemoryMetalHandlePropertiesEXT]) { + auto lock = vo->WriteLock(); + vo->PreCallRecordGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties, + record_obj); + } + } + VkResult result; + { + VVL_ZoneScopedN("Dispatch"); + result = device_dispatch->GetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties); + } + record_obj.result = result; + { + VVL_ZoneScopedN("PostCallRecord"); + for (auto& vo : device_dispatch->intercept_vectors[InterceptIdPostCallRecordGetMemoryMetalHandlePropertiesEXT]) { + auto lock = vo->WriteLock(); + vo->PostCallRecordGetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties, + record_obj); + } + } + return result; +} + +#endif // VK_USE_PLATFORM_METAL_EXT VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, @@ -27436,6 +27520,10 @@ const vvl::unordered_map& GetNameToFuncPtrMap() { {"vkUpdateIndirectExecutionSetShaderEXT", {kFuncTypeDev, (void*)UpdateIndirectExecutionSetShaderEXT}}, {"vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV", {kFuncTypePdev, (void*)GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV}}, +#ifdef VK_USE_PLATFORM_METAL_EXT + {"vkGetMemoryMetalHandleEXT", {kFuncTypeDev, (void*)GetMemoryMetalHandleEXT}}, + {"vkGetMemoryMetalHandlePropertiesEXT", {kFuncTypeDev, (void*)GetMemoryMetalHandlePropertiesEXT}}, +#endif // VK_USE_PLATFORM_METAL_EXT {"vkCreateAccelerationStructureKHR", {kFuncTypeDev, (void*)CreateAccelerationStructureKHR}}, {"vkDestroyAccelerationStructureKHR", {kFuncTypeDev, (void*)DestroyAccelerationStructureKHR}}, {"vkCmdBuildAccelerationStructuresKHR", {kFuncTypeDev, (void*)CmdBuildAccelerationStructuresKHR}}, diff --git a/layers/vulkan/generated/device_features.cpp b/layers/vulkan/generated/device_features.cpp index 5e936b043ed..248b67b018b 100644 --- a/layers/vulkan/generated/device_features.cpp +++ b/layers/vulkan/generated/device_features.cpp @@ -726,6 +726,12 @@ void GetEnabledDeviceFeatures(const VkDeviceCreateInfo *pCreateInfo, DeviceFeatu features->maintenance8 |= enabled->maintenance8 == VK_TRUE; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR: { + const VkPhysicalDeviceVideoMaintenance2FeaturesKHR *enabled = + reinterpret_cast(pNext); + features->videoMaintenance2 |= enabled->videoMaintenance2 == VK_TRUE; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR: { const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR *enabled = reinterpret_cast(pNext); diff --git a/layers/vulkan/generated/device_features.h b/layers/vulkan/generated/device_features.h index 22249efb175..f8d09fb8fd2 100644 --- a/layers/vulkan/generated/device_features.h +++ b/layers/vulkan/generated/device_features.h @@ -890,6 +890,8 @@ struct DeviceFeatures { bool videoEncodeQuantizationMap; // VkPhysicalDeviceVideoMaintenance1FeaturesKHR bool videoMaintenance1; + // VkPhysicalDeviceVideoMaintenance2FeaturesKHR + bool videoMaintenance2; // VkPhysicalDeviceVulkan12Features bool descriptorIndexing; // VkPhysicalDeviceVulkan12Features diff --git a/layers/vulkan/generated/dispatch_functions.h b/layers/vulkan/generated/dispatch_functions.h index ce95ed93113..02eaf8f73a1 100644 --- a/layers/vulkan/generated/dispatch_functions.h +++ b/layers/vulkan/generated/dispatch_functions.h @@ -4202,6 +4202,21 @@ static inline VkResult DispatchGetPhysicalDeviceCooperativeMatrixFlexibleDimensi auto dispatch = vvl::dispatch::GetData(physicalDevice); return dispatch->GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(physicalDevice, pPropertyCount, pProperties); } +#ifdef VK_USE_PLATFORM_METAL_EXT + +static inline VkResult DispatchGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle) { + auto dispatch = vvl::dispatch::GetData(device); + return dispatch->GetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle); +} + +static inline VkResult DispatchGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties) { + auto dispatch = vvl::dispatch::GetData(device); + return dispatch->GetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties); +} +#endif // VK_USE_PLATFORM_METAL_EXT static inline VkResult DispatchCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, diff --git a/layers/vulkan/generated/dispatch_object.cpp b/layers/vulkan/generated/dispatch_object.cpp index 66ad7dd763b..8a0d375bc91 100644 --- a/layers/vulkan/generated/dispatch_object.cpp +++ b/layers/vulkan/generated/dispatch_object.cpp @@ -8249,6 +8249,38 @@ VkResult Instance::GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertie return result; } +#ifdef VK_USE_PLATFORM_METAL_EXT + +VkResult Device::GetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle) { + if (!wrap_handles) return device_dispatch_table.GetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle); + vku::safe_VkMemoryGetMetalHandleInfoEXT var_local_pGetMetalHandleInfo; + vku::safe_VkMemoryGetMetalHandleInfoEXT* local_pGetMetalHandleInfo = nullptr; + { + if (pGetMetalHandleInfo) { + local_pGetMetalHandleInfo = &var_local_pGetMetalHandleInfo; + local_pGetMetalHandleInfo->initialize(pGetMetalHandleInfo); + + if (pGetMetalHandleInfo->memory) { + local_pGetMetalHandleInfo->memory = Unwrap(pGetMetalHandleInfo->memory); + } + } + } + VkResult result = device_dispatch_table.GetMemoryMetalHandleEXT( + device, (const VkMemoryGetMetalHandleInfoEXT*)local_pGetMetalHandleInfo, pHandle); + + return result; +} + +VkResult Device::GetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties) { + VkResult result = + device_dispatch_table.GetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties); + + return result; +} +#endif // VK_USE_PLATFORM_METAL_EXT VkResult Device::CreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, diff --git a/layers/vulkan/generated/dispatch_object_device_methods.h b/layers/vulkan/generated/dispatch_object_device_methods.h index 95a4949100e..540f6423040 100644 --- a/layers/vulkan/generated/dispatch_object_device_methods.h +++ b/layers/vulkan/generated/dispatch_object_device_methods.h @@ -924,6 +924,11 @@ void UpdateIndirectExecutionSetPipelineEXT(VkDevice device, VkIndirectExecutionS void UpdateIndirectExecutionSetShaderEXT(VkDevice device, VkIndirectExecutionSetEXT indirectExecutionSet, uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); +#ifdef VK_USE_PLATFORM_METAL_EXT +VkResult GetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, void** pHandle); +VkResult GetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties); +#endif // VK_USE_PLATFORM_METAL_EXT VkResult CreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure); diff --git a/layers/vulkan/generated/dispatch_vector.cpp b/layers/vulkan/generated/dispatch_vector.cpp index 377edad46a6..853f94c7612 100644 --- a/layers/vulkan/generated/dispatch_vector.cpp +++ b/layers/vulkan/generated/dispatch_vector.cpp @@ -1820,6 +1820,14 @@ void Device::InitObjectDispatchVectors() { BUILD_DISPATCH_VECTOR(PreCallValidateUpdateIndirectExecutionSetShaderEXT); BUILD_DISPATCH_VECTOR(PreCallRecordUpdateIndirectExecutionSetShaderEXT); BUILD_DISPATCH_VECTOR(PostCallRecordUpdateIndirectExecutionSetShaderEXT); +#ifdef VK_USE_PLATFORM_METAL_EXT + BUILD_DISPATCH_VECTOR(PreCallValidateGetMemoryMetalHandleEXT); + BUILD_DISPATCH_VECTOR(PreCallRecordGetMemoryMetalHandleEXT); + BUILD_DISPATCH_VECTOR(PostCallRecordGetMemoryMetalHandleEXT); + BUILD_DISPATCH_VECTOR(PreCallValidateGetMemoryMetalHandlePropertiesEXT); + BUILD_DISPATCH_VECTOR(PreCallRecordGetMemoryMetalHandlePropertiesEXT); + BUILD_DISPATCH_VECTOR(PostCallRecordGetMemoryMetalHandlePropertiesEXT); +#endif // VK_USE_PLATFORM_METAL_EXT BUILD_DISPATCH_VECTOR(PreCallValidateCreateAccelerationStructureKHR); BUILD_DISPATCH_VECTOR(PreCallRecordCreateAccelerationStructureKHR); BUILD_DISPATCH_VECTOR(PostCallRecordCreateAccelerationStructureKHR); diff --git a/layers/vulkan/generated/dispatch_vector.h b/layers/vulkan/generated/dispatch_vector.h index 46341b89afe..01690f6a457 100644 --- a/layers/vulkan/generated/dispatch_vector.h +++ b/layers/vulkan/generated/dispatch_vector.h @@ -1742,6 +1742,12 @@ typedef enum InterceptId { InterceptIdPreCallValidateUpdateIndirectExecutionSetShaderEXT, InterceptIdPreCallRecordUpdateIndirectExecutionSetShaderEXT, InterceptIdPostCallRecordUpdateIndirectExecutionSetShaderEXT, + InterceptIdPreCallValidateGetMemoryMetalHandleEXT, + InterceptIdPreCallRecordGetMemoryMetalHandleEXT, + InterceptIdPostCallRecordGetMemoryMetalHandleEXT, + InterceptIdPreCallValidateGetMemoryMetalHandlePropertiesEXT, + InterceptIdPreCallRecordGetMemoryMetalHandlePropertiesEXT, + InterceptIdPostCallRecordGetMemoryMetalHandlePropertiesEXT, InterceptIdPreCallValidateCreateAccelerationStructureKHR, InterceptIdPreCallRecordCreateAccelerationStructureKHR, InterceptIdPostCallRecordCreateAccelerationStructureKHR, diff --git a/layers/vulkan/generated/enum_flag_bits.h b/layers/vulkan/generated/enum_flag_bits.h index 8cd72d5d1a8..704197c88d8 100644 --- a/layers/vulkan/generated/enum_flag_bits.h +++ b/layers/vulkan/generated/enum_flag_bits.h @@ -24,7 +24,7 @@ #include #include "vulkan/vulkan.h" // clang-format off -const uint32_t GeneratedVulkanHeaderVersion = 305; +const uint32_t GeneratedVulkanHeaderVersion = 306; const VkAccessFlags AllVkAccessFlagBits = VK_ACCESS_INDIRECT_COMMAND_READ_BIT|VK_ACCESS_INDEX_READ_BIT|VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT|VK_ACCESS_UNIFORM_READ_BIT|VK_ACCESS_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT|VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT|VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT|VK_ACCESS_TRANSFER_READ_BIT|VK_ACCESS_TRANSFER_WRITE_BIT|VK_ACCESS_HOST_READ_BIT|VK_ACCESS_HOST_WRITE_BIT|VK_ACCESS_MEMORY_READ_BIT|VK_ACCESS_MEMORY_WRITE_BIT|VK_ACCESS_NONE|VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT|VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT|VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT|VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT|VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT|VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR|VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR|VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT|VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR|VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV|VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV; const VkImageAspectFlags AllVkImageAspectFlagBits = VK_IMAGE_ASPECT_COLOR_BIT|VK_IMAGE_ASPECT_DEPTH_BIT|VK_IMAGE_ASPECT_STENCIL_BIT|VK_IMAGE_ASPECT_METADATA_BIT|VK_IMAGE_ASPECT_PLANE_0_BIT|VK_IMAGE_ASPECT_PLANE_1_BIT|VK_IMAGE_ASPECT_PLANE_2_BIT|VK_IMAGE_ASPECT_NONE|VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT|VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT|VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT|VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT; const VkInstanceCreateFlags AllVkInstanceCreateFlagBits = VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR; @@ -60,7 +60,7 @@ const VkCommandPoolCreateFlags AllVkCommandPoolCreateFlagBits = VK_COMMAND_POOL_ const VkQueryControlFlags AllVkQueryControlFlagBits = VK_QUERY_CONTROL_PRECISE_BIT; const VkCommandBufferUsageFlags AllVkCommandBufferUsageFlagBits = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT|VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT|VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT; const VkMemoryAllocateFlags AllVkMemoryAllocateFlagBits = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT|VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT|VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT; -const VkExternalMemoryHandleTypeFlags AllVkExternalMemoryHandleTypeFlagBits = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT|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|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA|VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX; +const VkExternalMemoryHandleTypeFlags AllVkExternalMemoryHandleTypeFlagBits = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT|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|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA|VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX|VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT|VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT; const VkExternalFenceHandleTypeFlags AllVkExternalFenceHandleTypeFlagBits = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT; const VkExternalSemaphoreHandleTypeFlags AllVkExternalSemaphoreHandleTypeFlagBits = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT|VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA; const VkDescriptorBindingFlags AllVkDescriptorBindingFlagBits = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT|VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT|VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT|VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT; @@ -83,7 +83,7 @@ const VkDisplayPlaneAlphaFlagsKHR AllVkDisplayPlaneAlphaFlagBitsKHR = VK_DISPLAY const VkVideoCodecOperationFlagsKHR AllVkVideoCodecOperationFlagBitsKHR = VK_VIDEO_CODEC_OPERATION_NONE_KHR|VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR|VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR|VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR|VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR|VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR|VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR; const VkVideoChromaSubsamplingFlagsKHR AllVkVideoChromaSubsamplingFlagBitsKHR = VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR|VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR|VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR|VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR|VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR; const VkVideoComponentBitDepthFlagsKHR AllVkVideoComponentBitDepthFlagBitsKHR = VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR|VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR|VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR|VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR; -const VkVideoSessionCreateFlagsKHR AllVkVideoSessionCreateFlagBitsKHR = VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR|VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR|VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR|VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR|VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR; +const VkVideoSessionCreateFlagsKHR AllVkVideoSessionCreateFlagBitsKHR = VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR|VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR|VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR|VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR|VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR|VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR; const VkVideoSessionParametersCreateFlagsKHR AllVkVideoSessionParametersCreateFlagBitsKHR = VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR; const VkVideoCodingControlFlagsKHR AllVkVideoCodingControlFlagBitsKHR = VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR|VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR|VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR; const VkVideoDecodeUsageFlagsKHR AllVkVideoDecodeUsageFlagBitsKHR = VK_VIDEO_DECODE_USAGE_DEFAULT_KHR|VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR|VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR|VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR; diff --git a/layers/vulkan/generated/error_location_helper.cpp b/layers/vulkan/generated/error_location_helper.cpp index b313da1346a..3973a0dcab8 100644 --- a/layers/vulkan/generated/error_location_helper.cpp +++ b/layers/vulkan/generated/error_location_helper.cpp @@ -564,6 +564,8 @@ const char* String(Func func) { {"vkGetMemoryFdKHR", 17}, {"vkGetMemoryFdPropertiesKHR", 27}, {"vkGetMemoryHostPointerPropertiesEXT", 36}, + {"vkGetMemoryMetalHandleEXT", 26}, + {"vkGetMemoryMetalHandlePropertiesEXT", 36}, {"vkGetMemoryRemoteAddressNV", 27}, {"vkGetMemoryWin32HandleKHR", 26}, {"vkGetMemoryWin32HandleNV", 25}, @@ -1117,6 +1119,7 @@ const char* String(Struct structure) { {"VkImportMemoryBufferCollectionFUCHSIA", 38}, {"VkImportMemoryFdInfoKHR", 24}, {"VkImportMemoryHostPointerInfoEXT", 33}, + {"VkImportMemoryMetalHandleInfoEXT", 33}, {"VkImportMemoryWin32HandleInfoKHR", 33}, {"VkImportMemoryWin32HandleInfoNV", 32}, {"VkImportMemoryZirconHandleInfoFUCHSIA", 38}, @@ -1166,6 +1169,7 @@ const char* String(Struct structure) { {"VkMemoryFdPropertiesKHR", 24}, {"VkMemoryGetAndroidHardwareBufferInfoANDROID", 44}, {"VkMemoryGetFdInfoKHR", 21}, + {"VkMemoryGetMetalHandleInfoEXT", 30}, {"VkMemoryGetRemoteAddressInfoNV", 31}, {"VkMemoryGetWin32HandleInfoKHR", 30}, {"VkMemoryGetZirconHandleInfoFUCHSIA", 35}, @@ -1173,6 +1177,7 @@ const char* String(Struct structure) { {"VkMemoryHostPointerPropertiesEXT", 33}, {"VkMemoryMapInfo", 16}, {"VkMemoryMapPlacedInfoEXT", 25}, + {"VkMemoryMetalHandlePropertiesEXT", 33}, {"VkMemoryOpaqueCaptureAddressAllocateInfo", 41}, {"VkMemoryPriorityAllocateInfoEXT", 32}, {"VkMemoryRequirements", 21}, @@ -1533,6 +1538,7 @@ const char* String(Struct structure) { {"VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR", 54}, {"VkPhysicalDeviceVideoFormatInfoKHR", 35}, {"VkPhysicalDeviceVideoMaintenance1FeaturesKHR", 45}, + {"VkPhysicalDeviceVideoMaintenance2FeaturesKHR", 45}, {"VkPhysicalDeviceVulkan11Features", 33}, {"VkPhysicalDeviceVulkan11Properties", 35}, {"VkPhysicalDeviceVulkan12Features", 33}, @@ -1781,18 +1787,21 @@ const char* String(Struct structure) { {"VkVideoCodingControlInfoKHR", 28}, {"VkVideoDecodeAV1CapabilitiesKHR", 32}, {"VkVideoDecodeAV1DpbSlotInfoKHR", 31}, + {"VkVideoDecodeAV1InlineSessionParametersInfoKHR", 47}, {"VkVideoDecodeAV1PictureInfoKHR", 31}, {"VkVideoDecodeAV1ProfileInfoKHR", 31}, {"VkVideoDecodeAV1SessionParametersCreateInfoKHR", 47}, {"VkVideoDecodeCapabilitiesKHR", 29}, {"VkVideoDecodeH264CapabilitiesKHR", 33}, {"VkVideoDecodeH264DpbSlotInfoKHR", 32}, + {"VkVideoDecodeH264InlineSessionParametersInfoKHR", 48}, {"VkVideoDecodeH264PictureInfoKHR", 32}, {"VkVideoDecodeH264ProfileInfoKHR", 32}, {"VkVideoDecodeH264SessionParametersAddInfoKHR", 45}, {"VkVideoDecodeH264SessionParametersCreateInfoKHR", 48}, {"VkVideoDecodeH265CapabilitiesKHR", 33}, {"VkVideoDecodeH265DpbSlotInfoKHR", 32}, + {"VkVideoDecodeH265InlineSessionParametersInfoKHR", 48}, {"VkVideoDecodeH265PictureInfoKHR", 32}, {"VkVideoDecodeH265ProfileInfoKHR", 32}, {"VkVideoDecodeH265SessionParametersAddInfoKHR", 45}, @@ -3459,6 +3468,7 @@ const char* String(Field field) { {"pGeneratedCommandsInfo", 23}, {"pGeometries", 12}, {"pGetFdInfo", 11}, + {"pGetMetalHandleInfo", 20}, {"pGetWin32HandleInfo", 20}, {"pGetZirconHandleInfo", 21}, {"pGranularity", 13}, @@ -3536,6 +3546,7 @@ const char* String(Field field) { {"pMemoryGetRemoteAddressInfo", 28}, {"pMemoryHostPointerProperties", 29}, {"pMemoryMapInfo", 15}, + {"pMemoryMetalHandleProperties", 29}, {"pMemoryProperties", 18}, {"pMemoryRanges", 14}, {"pMemoryRequirements", 20}, @@ -3695,13 +3706,16 @@ const char* String(Field field) { {"pStdDecoderModelInfo", 21}, {"pStdHeaderVersion", 18}, {"pStdOperatingPoints", 20}, + {"pStdPPS", 8}, {"pStdPPSs", 9}, {"pStdPictureInfo", 16}, {"pStdReferenceInfo", 18}, + {"pStdSPS", 8}, {"pStdSPSs", 9}, {"pStdSequenceHeader", 19}, {"pStdSliceHeader", 16}, {"pStdSliceSegmentHeader", 23}, + {"pStdVPS", 8}, {"pStdVPSs", 9}, {"pStencilAttachment", 19}, {"pStencilInputAttachmentIndex", 29}, @@ -4633,6 +4647,7 @@ const char* String(Field field) { {"videoEncodeAV1", 15}, {"videoEncodeQuantizationMap", 27}, {"videoMaintenance1", 18}, + {"videoMaintenance2", 18}, {"videoSession", 13}, {"videoSessionParameters", 23}, {"videoSessionParametersTemplate", 31}, @@ -5062,6 +5077,7 @@ const char* String(Extension extension) { {"VK_EXT_external_memory_acquire_unmodified", 42}, {"VK_EXT_external_memory_dma_buf", 31}, {"VK_EXT_external_memory_host", 28}, + {"VK_EXT_external_memory_metal", 29}, {"VK_EXT_filter_cubic", 20}, {"VK_EXT_fragment_density_map", 28}, {"VK_EXT_fragment_density_map2", 29}, @@ -5288,6 +5304,7 @@ const char* String(Extension extension) { {"VK_KHR_video_encode_quantization_map", 37}, {"VK_KHR_video_encode_queue", 26}, {"VK_KHR_video_maintenance1", 26}, + {"VK_KHR_video_maintenance2", 26}, {"VK_KHR_video_queue", 19}, {"VK_KHR_vulkan_memory_model", 27}, {"VK_KHR_wayland_surface", 23}, @@ -5391,6 +5408,7 @@ bool IsFieldPointer(Field field) { case Field::dfb: case Field::displayName: case Field::dpy: + case Field::handle: case Field::hostAddress: case Field::opaqueCaptureDescriptorData: case Field::pAccelerationStructure: @@ -5587,6 +5605,7 @@ bool IsFieldPointer(Field field) { case Field::pGeneratedCommandsInfo: case Field::pGeometries: case Field::pGetFdInfo: + case Field::pGetMetalHandleInfo: case Field::pGetWin32HandleInfo: case Field::pGetZirconHandleInfo: case Field::pGranularity: @@ -5664,6 +5683,7 @@ bool IsFieldPointer(Field field) { case Field::pMemoryGetRemoteAddressInfo: case Field::pMemoryHostPointerProperties: case Field::pMemoryMapInfo: + case Field::pMemoryMetalHandleProperties: case Field::pMemoryProperties: case Field::pMemoryRanges: case Field::pMemoryRequirements: @@ -5823,13 +5843,16 @@ bool IsFieldPointer(Field field) { case Field::pStdDecoderModelInfo: case Field::pStdHeaderVersion: case Field::pStdOperatingPoints: + case Field::pStdPPS: case Field::pStdPPSs: case Field::pStdPictureInfo: case Field::pStdReferenceInfo: + case Field::pStdSPS: case Field::pStdSPSs: case Field::pStdSequenceHeader: case Field::pStdSliceHeader: case Field::pStdSliceSegmentHeader: + case Field::pStdVPS: case Field::pStdVPSs: case Field::pStencilAttachment: case Field::pStencilInputAttachmentIndex: diff --git a/layers/vulkan/generated/error_location_helper.h b/layers/vulkan/generated/error_location_helper.h index 3e2d5354659..e0638bf8dba 100644 --- a/layers/vulkan/generated/error_location_helper.h +++ b/layers/vulkan/generated/error_location_helper.h @@ -561,6 +561,8 @@ enum class Func { vkGetMemoryFdKHR, vkGetMemoryFdPropertiesKHR, vkGetMemoryHostPointerPropertiesEXT, + vkGetMemoryMetalHandleEXT, + vkGetMemoryMetalHandlePropertiesEXT, vkGetMemoryRemoteAddressNV, vkGetMemoryWin32HandleKHR, vkGetMemoryWin32HandleNV, @@ -1111,6 +1113,7 @@ enum class Struct { VkImportMemoryBufferCollectionFUCHSIA, VkImportMemoryFdInfoKHR, VkImportMemoryHostPointerInfoEXT, + VkImportMemoryMetalHandleInfoEXT, VkImportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV, VkImportMemoryZirconHandleInfoFUCHSIA, @@ -1160,6 +1163,7 @@ enum class Struct { VkMemoryFdPropertiesKHR, VkMemoryGetAndroidHardwareBufferInfoANDROID, VkMemoryGetFdInfoKHR, + VkMemoryGetMetalHandleInfoEXT, VkMemoryGetRemoteAddressInfoNV, VkMemoryGetWin32HandleInfoKHR, VkMemoryGetZirconHandleInfoFUCHSIA, @@ -1167,6 +1171,7 @@ enum class Struct { VkMemoryHostPointerPropertiesEXT, VkMemoryMapInfo, VkMemoryMapPlacedInfoEXT, + VkMemoryMetalHandlePropertiesEXT, VkMemoryOpaqueCaptureAddressAllocateInfo, VkMemoryPriorityAllocateInfoEXT, VkMemoryRequirements, @@ -1527,6 +1532,7 @@ enum class Struct { VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR, VkPhysicalDeviceVideoFormatInfoKHR, VkPhysicalDeviceVideoMaintenance1FeaturesKHR, + VkPhysicalDeviceVideoMaintenance2FeaturesKHR, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan11Properties, VkPhysicalDeviceVulkan12Features, @@ -1775,18 +1781,21 @@ enum class Struct { VkVideoCodingControlInfoKHR, VkVideoDecodeAV1CapabilitiesKHR, VkVideoDecodeAV1DpbSlotInfoKHR, + VkVideoDecodeAV1InlineSessionParametersInfoKHR, VkVideoDecodeAV1PictureInfoKHR, VkVideoDecodeAV1ProfileInfoKHR, VkVideoDecodeAV1SessionParametersCreateInfoKHR, VkVideoDecodeCapabilitiesKHR, VkVideoDecodeH264CapabilitiesKHR, VkVideoDecodeH264DpbSlotInfoKHR, + VkVideoDecodeH264InlineSessionParametersInfoKHR, VkVideoDecodeH264PictureInfoKHR, VkVideoDecodeH264ProfileInfoKHR, VkVideoDecodeH264SessionParametersAddInfoKHR, VkVideoDecodeH264SessionParametersCreateInfoKHR, VkVideoDecodeH265CapabilitiesKHR, VkVideoDecodeH265DpbSlotInfoKHR, + VkVideoDecodeH265InlineSessionParametersInfoKHR, VkVideoDecodeH265PictureInfoKHR, VkVideoDecodeH265ProfileInfoKHR, VkVideoDecodeH265SessionParametersAddInfoKHR, @@ -3450,6 +3459,7 @@ enum class Field { pGeneratedCommandsInfo, pGeometries, pGetFdInfo, + pGetMetalHandleInfo, pGetWin32HandleInfo, pGetZirconHandleInfo, pGranularity, @@ -3527,6 +3537,7 @@ enum class Field { pMemoryGetRemoteAddressInfo, pMemoryHostPointerProperties, pMemoryMapInfo, + pMemoryMetalHandleProperties, pMemoryProperties, pMemoryRanges, pMemoryRequirements, @@ -3686,13 +3697,16 @@ enum class Field { pStdDecoderModelInfo, pStdHeaderVersion, pStdOperatingPoints, + pStdPPS, pStdPPSs, pStdPictureInfo, pStdReferenceInfo, + pStdSPS, pStdSPSs, pStdSequenceHeader, pStdSliceHeader, pStdSliceSegmentHeader, + pStdVPS, pStdVPSs, pStencilAttachment, pStencilInputAttachmentIndex, @@ -4624,6 +4638,7 @@ enum class Field { videoEncodeAV1, videoEncodeQuantizationMap, videoMaintenance1, + videoMaintenance2, videoSession, videoSessionParameters, videoSessionParametersTemplate, @@ -5044,6 +5059,7 @@ enum class Extension { _VK_EXT_external_memory_acquire_unmodified, _VK_EXT_external_memory_dma_buf, _VK_EXT_external_memory_host, + _VK_EXT_external_memory_metal, _VK_EXT_filter_cubic, _VK_EXT_fragment_density_map, _VK_EXT_fragment_density_map2, @@ -5270,6 +5286,7 @@ enum class Extension { _VK_KHR_video_encode_quantization_map, _VK_KHR_video_encode_queue, _VK_KHR_video_maintenance1, + _VK_KHR_video_maintenance2, _VK_KHR_video_queue, _VK_KHR_vulkan_memory_model, _VK_KHR_wayland_surface, diff --git a/layers/vulkan/generated/feature_requirements_helper.cpp b/layers/vulkan/generated/feature_requirements_helper.cpp index 17bf4787102..88bf2cc2a5f 100644 --- a/layers/vulkan/generated/feature_requirements_helper.cpp +++ b/layers/vulkan/generated/feature_requirements_helper.cpp @@ -6957,6 +6957,21 @@ FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **i return {&vk_struct->videoMaintenance1, "VkPhysicalDeviceVideoMaintenance1FeaturesKHR::videoMaintenance1"}; } + case Feature::videoMaintenance2: { + auto vk_struct = const_cast( + vku::FindStructInPNextChain(*inout_pnext_chain)); + if (!vk_struct) { + vk_struct = new VkPhysicalDeviceVideoMaintenance2FeaturesKHR; + *vk_struct = vku::InitStructHelper(); + if (*inout_pnext_chain) { + vvl::PnextChainAdd(*inout_pnext_chain, vk_struct); + } else { + *inout_pnext_chain = vk_struct; + } + } + return {&vk_struct->videoMaintenance2, "VkPhysicalDeviceVideoMaintenance2FeaturesKHR::videoMaintenance2"}; + } + case Feature::descriptorIndexing: { auto vk_struct = const_cast( vku::FindStructInPNextChain(*inout_pnext_chain)); diff --git a/layers/vulkan/generated/feature_requirements_helper.h b/layers/vulkan/generated/feature_requirements_helper.h index 61ba1b1010b..8dd38279666 100644 --- a/layers/vulkan/generated/feature_requirements_helper.h +++ b/layers/vulkan/generated/feature_requirements_helper.h @@ -880,6 +880,8 @@ enum class Feature { videoEncodeQuantizationMap, // VkPhysicalDeviceVideoMaintenance1FeaturesKHR videoMaintenance1, + // VkPhysicalDeviceVideoMaintenance2FeaturesKHR + videoMaintenance2, // VkPhysicalDeviceVulkan12Features descriptorIndexing, // VkPhysicalDeviceVulkan12Features diff --git a/layers/vulkan/generated/object_tracker.cpp b/layers/vulkan/generated/object_tracker.cpp index 354765f0165..a416d35c792 100644 --- a/layers/vulkan/generated/object_tracker.cpp +++ b/layers/vulkan/generated/object_tracker.cpp @@ -7883,6 +7883,28 @@ bool Device::PreCallValidateUpdateIndirectExecutionSetShaderEXT(VkDevice device, // Checked by chassis: physicalDevice: // "VUID-vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV-physicalDevice-parameter" +#ifdef VK_USE_PLATFORM_METAL_EXT + +bool Device::PreCallValidateGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const ErrorObject& error_obj) const { + bool skip = false; + // Checked by chassis: device: "VUID-vkGetMemoryMetalHandleEXT-device-parameter" + if (pGetMetalHandleInfo) { + [[maybe_unused]] const Location pGetMetalHandleInfo_loc = error_obj.location.dot(Field::pGetMetalHandleInfo); + skip |= + ValidateObject(pGetMetalHandleInfo->memory, kVulkanObjectTypeDeviceMemory, false, + "VUID-VkMemoryGetMetalHandleInfoEXT-memory-parameter", + "UNASSIGNED-VkMemoryGetMetalHandleInfoEXT-memory-parent", pGetMetalHandleInfo_loc.dot(Field::memory)); + } + + return skip; +} + +// vkGetMemoryMetalHandlePropertiesEXT: +// Checked by chassis: device: "VUID-vkGetMemoryMetalHandlePropertiesEXT-device-parameter" + +#endif // VK_USE_PLATFORM_METAL_EXT + bool Device::PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/object_tracker_device_methods.h b/layers/vulkan/generated/object_tracker_device_methods.h index 9b75b33086c..c4b090df654 100644 --- a/layers/vulkan/generated/object_tracker_device_methods.h +++ b/layers/vulkan/generated/object_tracker_device_methods.h @@ -1263,6 +1263,10 @@ bool PreCallValidateUpdateIndirectExecutionSetShaderEXT(VkDevice device, VkIndir uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites, const ErrorObject& error_obj) const override; +#ifdef VK_USE_PLATFORM_METAL_EXT +bool PreCallValidateGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const ErrorObject& error_obj) const override; +#endif // VK_USE_PLATFORM_METAL_EXT bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/pnext_chain_extraction.cpp b/layers/vulkan/generated/pnext_chain_extraction.cpp index c66198b3dcd..ee7834305c4 100644 --- a/layers/vulkan/generated/pnext_chain_extraction.cpp +++ b/layers/vulkan/generated/pnext_chain_extraction.cpp @@ -1433,6 +1433,26 @@ void PnextChainFree(void *chain) { header->pNext = nullptr; delete reinterpret_cast(header); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR: PnextChainFree(header->pNext); header->pNext = nullptr; @@ -3208,6 +3228,13 @@ void PnextChainFree(void *chain) { header->pNext = nullptr; delete reinterpret_cast(header); break; +#ifdef VK_USE_PLATFORM_METAL_EXT + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; +#endif // VK_USE_PLATFORM_METAL_EXT case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: PnextChainFree(header->pNext); header->pNext = nullptr; diff --git a/layers/vulkan/generated/stateless_device_methods.h b/layers/vulkan/generated/stateless_device_methods.h index 2f7167812c8..78c96406bf5 100644 --- a/layers/vulkan/generated/stateless_device_methods.h +++ b/layers/vulkan/generated/stateless_device_methods.h @@ -1463,6 +1463,14 @@ bool PreCallValidateUpdateIndirectExecutionSetShaderEXT(VkDevice device, VkIndir uint32_t executionSetWriteCount, const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites, const ErrorObject& error_obj) const override; +#ifdef VK_USE_PLATFORM_METAL_EXT +bool PreCallValidateGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const ErrorObject& error_obj) const override; +bool PreCallValidateGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const ErrorObject& error_obj) const override; +#endif // VK_USE_PLATFORM_METAL_EXT bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/stateless_validation_helper.cpp b/layers/vulkan/generated/stateless_validation_helper.cpp index 850ef9fdad2..66d5677f27f 100644 --- a/layers/vulkan/generated/stateless_validation_helper.cpp +++ b/layers/vulkan/generated/stateless_validation_helper.cpp @@ -1730,6 +1730,24 @@ bool Context::ValidatePnextFeatureStructContents(const Location& loc, const VkBa } } break; + // Validation code for VkPhysicalDeviceVideoMaintenance2FeaturesKHR structure members + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR: { // Covers + // VUID-VkPhysicalDeviceVideoMaintenance2FeaturesKHR-sType-sType + + if (!IsExtEnabled(extensions.vk_khr_video_maintenance2)) { + skip |= + log.LogError(pnext_vuid, error_obj.handle, loc.dot(Field::pNext), + "includes a pointer to a VkStructureType " + "(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR), but its parent extension " + "VK_KHR_video_maintenance2 has not been enabled."); + } + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkPhysicalDeviceVideoMaintenance2FeaturesKHR); + VkPhysicalDeviceVideoMaintenance2FeaturesKHR* structure = (VkPhysicalDeviceVideoMaintenance2FeaturesKHR*)header; + skip |= ValidateBool32(pNext_loc.dot(Field::videoMaintenance2), structure->videoMaintenance2); + } + } break; + // Validation code for VkPhysicalDeviceDepthClampZeroOneFeaturesKHR structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR: { // Covers // VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesKHR-sType-sType @@ -7724,6 +7742,45 @@ bool Context::ValidatePnextStructContents(const Location& loc, const VkBaseOutSt } } break; + // Validation code for VkVideoDecodeH264InlineSessionParametersInfoKHR structure members + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR: { // Covers + // VUID-VkVideoDecodeH264InlineSessionParametersInfoKHR-sType-sType + + if (!IsExtEnabled(extensions.vk_khr_video_maintenance2)) { + skip |= log.LogError( + pnext_vuid, error_obj.handle, loc.dot(Field::pNext), + "includes a pointer to a VkStructureType " + "(VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR), but its parent extension " + "VK_KHR_video_maintenance2 has not been enabled."); + } + } break; + + // Validation code for VkVideoDecodeH265InlineSessionParametersInfoKHR structure members + case VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR: { // Covers + // VUID-VkVideoDecodeH265InlineSessionParametersInfoKHR-sType-sType + + if (!IsExtEnabled(extensions.vk_khr_video_maintenance2)) { + skip |= log.LogError( + pnext_vuid, error_obj.handle, loc.dot(Field::pNext), + "includes a pointer to a VkStructureType " + "(VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR), but its parent extension " + "VK_KHR_video_maintenance2 has not been enabled."); + } + } break; + + // Validation code for VkVideoDecodeAV1InlineSessionParametersInfoKHR structure members + case VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR: { // Covers + // VUID-VkVideoDecodeAV1InlineSessionParametersInfoKHR-sType-sType + + if (!IsExtEnabled(extensions.vk_khr_video_maintenance2)) { + skip |= log.LogError( + pnext_vuid, error_obj.handle, loc.dot(Field::pNext), + "includes a pointer to a VkStructureType " + "(VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR), but its parent extension " + "VK_KHR_video_maintenance2 has not been enabled."); + } + } break; + // Validation code for VkDebugReportCallbackCreateInfoEXT structure members case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: { // Covers // VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType @@ -10908,6 +10965,26 @@ bool Context::ValidatePnextStructContents(const Location& loc, const VkBaseOutSt "VUID-VkHdrVividDynamicMetadataHUAWEI-pDynamicMetadata-parameter"); } } break; +#ifdef VK_USE_PLATFORM_METAL_EXT + + // Validation code for VkImportMemoryMetalHandleInfoEXT structure members + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT: { // Covers VUID-VkImportMemoryMetalHandleInfoEXT-sType-sType + + if (!IsExtEnabled(extensions.vk_ext_external_memory_metal)) { + skip |= log.LogError(pnext_vuid, error_obj.handle, loc.dot(Field::pNext), + "includes a pointer to a VkStructureType " + "(VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT), but its parent extension " + "VK_EXT_external_memory_metal has not been enabled."); + } + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkImportMemoryMetalHandleInfoEXT); + VkImportMemoryMetalHandleInfoEXT* structure = (VkImportMemoryMetalHandleInfoEXT*)header; + skip |= ValidateFlags(pNext_loc.dot(Field::handleType), vvl::FlagBitmask::VkExternalMemoryHandleTypeFlagBits, + AllVkExternalMemoryHandleTypeFlagBits, structure->handleType, kOptionalSingleBit, + "VUID-VkImportMemoryMetalHandleInfoEXT-handleType-parameter"); + } + } break; +#endif // VK_USE_PLATFORM_METAL_EXT // Validation code for VkWriteDescriptorSetAccelerationStructureKHR structure members case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR: { // Covers @@ -11282,6 +11359,7 @@ bool Instance::PreCallValidateCreateDevice(VkPhysicalDevice physicalDevice, cons VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES, @@ -11458,6 +11536,7 @@ bool Device::PreCallValidateAllocateMemory(VkDevice device, const VkMemoryAlloca VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA, VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR, VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT, + VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR, VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV, VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA, @@ -19272,8 +19351,13 @@ bool Device::PreCallValidateCmdDecodeVideoKHR(VkCommandBuffer commandBuffer, con if (pDecodeInfo != nullptr) { [[maybe_unused]] const Location pDecodeInfo_loc = loc.dot(Field::pDecodeInfo); constexpr std::array allowed_structs_VkVideoDecodeInfoKHR = { - VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR, VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR, - VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR, VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR}; + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR, + VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR, + VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR, + VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR}; skip |= context.ValidateStructPnext(pDecodeInfo_loc, pDecodeInfo->pNext, allowed_structs_VkVideoDecodeInfoKHR.size(), @@ -28370,6 +28454,63 @@ bool Instance::PreCallValidateGetPhysicalDeviceCooperativeMatrixFlexibleDimensio return skip; } +#ifdef VK_USE_PLATFORM_METAL_EXT +bool Device::PreCallValidateGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const ErrorObject& error_obj) const { + bool skip = false; + Context context(*this, error_obj, extensions); + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(extensions.vk_ext_external_memory_metal)) + skip |= OutputExtensionError(loc, {vvl::Extension::_VK_EXT_external_memory_metal}); + skip |= context.ValidateStructType( + loc.dot(Field::pGetMetalHandleInfo), pGetMetalHandleInfo, VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT, true, + "VUID-vkGetMemoryMetalHandleEXT-pGetMetalHandleInfo-parameter", "VUID-VkMemoryGetMetalHandleInfoEXT-sType-sType"); + if (pGetMetalHandleInfo != nullptr) { + [[maybe_unused]] const Location pGetMetalHandleInfo_loc = loc.dot(Field::pGetMetalHandleInfo); + skip |= context.ValidateStructPnext(pGetMetalHandleInfo_loc, pGetMetalHandleInfo->pNext, 0, nullptr, + GeneratedVulkanHeaderVersion, "VUID-VkMemoryGetMetalHandleInfoEXT-pNext-pNext", + kVUIDUndefined, true); + + skip |= context.ValidateRequiredHandle(pGetMetalHandleInfo_loc.dot(Field::memory), pGetMetalHandleInfo->memory); + + skip |= context.ValidateFlags( + pGetMetalHandleInfo_loc.dot(Field::handleType), vvl::FlagBitmask::VkExternalMemoryHandleTypeFlagBits, + AllVkExternalMemoryHandleTypeFlagBits, pGetMetalHandleInfo->handleType, kRequiredSingleBit, + "VUID-VkMemoryGetMetalHandleInfoEXT-handleType-parameter", "VUID-VkMemoryGetMetalHandleInfoEXT-handleType-parameter"); + } + skip |= context.ValidateRequiredPointer(loc.dot(Field::pHandle), pHandle, "VUID-vkGetMemoryMetalHandleEXT-pHandle-parameter"); + return skip; +} + +bool Device::PreCallValidateGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const ErrorObject& error_obj) const { + bool skip = false; + Context context(*this, error_obj, extensions); + [[maybe_unused]] const Location loc = error_obj.location; + if (!IsExtEnabled(extensions.vk_ext_external_memory_metal)) + skip |= OutputExtensionError(loc, {vvl::Extension::_VK_EXT_external_memory_metal}); + skip |= context.ValidateFlags(loc.dot(Field::handleType), vvl::FlagBitmask::VkExternalMemoryHandleTypeFlagBits, + AllVkExternalMemoryHandleTypeFlagBits, handleType, kRequiredSingleBit, + "VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-parameter", + "VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-parameter"); + skip |= context.ValidateRequiredPointer(loc.dot(Field::pHandle), pHandle, + "VUID-vkGetMemoryMetalHandlePropertiesEXT-pHandle-parameter"); + skip |= context.ValidateStructType(loc.dot(Field::pMemoryMetalHandleProperties), pMemoryMetalHandleProperties, + VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT, true, + "VUID-vkGetMemoryMetalHandlePropertiesEXT-pMemoryMetalHandleProperties-parameter", + "VUID-VkMemoryMetalHandlePropertiesEXT-sType-sType"); + if (pMemoryMetalHandleProperties != nullptr) { + [[maybe_unused]] const Location pMemoryMetalHandleProperties_loc = loc.dot(Field::pMemoryMetalHandleProperties); + skip |= context.ValidateStructPnext(pMemoryMetalHandleProperties_loc, pMemoryMetalHandleProperties->pNext, 0, nullptr, + GeneratedVulkanHeaderVersion, "VUID-VkMemoryMetalHandlePropertiesEXT-pNext-pNext", + kVUIDUndefined, false); + } + return skip; +} +#endif // VK_USE_PLATFORM_METAL_EXT + bool Device::PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/test_icd_helper.h b/layers/vulkan/generated/test_icd_helper.h index 9496ba4a5b3..f51272cbc39 100644 --- a/layers/vulkan/generated/test_icd_helper.h +++ b/layers/vulkan/generated/test_icd_helper.h @@ -218,6 +218,7 @@ static const std::unordered_map device_extension_map = { {VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME, VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_SPEC_VERSION}, {VK_KHR_MAINTENANCE_7_EXTENSION_NAME, VK_KHR_MAINTENANCE_7_SPEC_VERSION}, {VK_KHR_MAINTENANCE_8_EXTENSION_NAME, VK_KHR_MAINTENANCE_8_SPEC_VERSION}, + {VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME, VK_KHR_VIDEO_MAINTENANCE_2_SPEC_VERSION}, {VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME, VK_KHR_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION}, {VK_NV_GLSL_SHADER_EXTENSION_NAME, VK_NV_GLSL_SHADER_SPEC_VERSION}, {VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME, VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION}, @@ -483,6 +484,9 @@ static const std::unordered_map device_extension_map = { {VK_HUAWEI_HDR_VIVID_EXTENSION_NAME, VK_HUAWEI_HDR_VIVID_SPEC_VERSION}, {VK_NV_COOPERATIVE_MATRIX_2_EXTENSION_NAME, VK_NV_COOPERATIVE_MATRIX_2_SPEC_VERSION}, {VK_ARM_PIPELINE_OPACITY_MICROMAP_EXTENSION_NAME, VK_ARM_PIPELINE_OPACITY_MICROMAP_SPEC_VERSION}, +#ifdef VK_USE_PLATFORM_METAL_EXT + {VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION}, +#endif // VK_USE_PLATFORM_METAL_EXT {VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME, VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_SPEC_VERSION}, {VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME, VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION}, {VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME, VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION}, @@ -1992,6 +1996,14 @@ static VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetShaderEXT( const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites); static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties); +#ifdef VK_USE_PLATFORM_METAL_EXT +static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT(VkDevice device, + const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle); +static VKAPI_ATTR VkResult VKAPI_CALL +GetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties); +#endif // VK_USE_PLATFORM_METAL_EXT static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, @@ -2814,6 +2826,10 @@ static const std::unordered_map name_to_func_ptr_map = { {"vkUpdateIndirectExecutionSetShaderEXT", (void*)UpdateIndirectExecutionSetShaderEXT}, {"vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV", (void*)GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV}, +#ifdef VK_USE_PLATFORM_METAL_EXT + {"vkGetMemoryMetalHandleEXT", (void*)GetMemoryMetalHandleEXT}, + {"vkGetMemoryMetalHandlePropertiesEXT", (void*)GetMemoryMetalHandlePropertiesEXT}, +#endif // VK_USE_PLATFORM_METAL_EXT {"vkCreateAccelerationStructureKHR", (void*)CreateAccelerationStructureKHR}, {"vkDestroyAccelerationStructureKHR", (void*)DestroyAccelerationStructureKHR}, {"vkCmdBuildAccelerationStructuresKHR", (void*)CmdBuildAccelerationStructuresKHR}, @@ -5503,6 +5519,20 @@ static VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexible return VK_SUCCESS; } +#ifdef VK_USE_PLATFORM_METAL_EXT +static VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT(VkDevice device, + const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle) { + return VK_SUCCESS; +} + +static VKAPI_ATTR VkResult VKAPI_CALL +GetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties) { + return VK_SUCCESS; +} + +#endif // VK_USE_PLATFORM_METAL_EXT static VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, diff --git a/layers/vulkan/generated/thread_safety.cpp b/layers/vulkan/generated/thread_safety.cpp index 2c74df6a5c5..5c727b9be70 100644 --- a/layers/vulkan/generated/thread_safety.cpp +++ b/layers/vulkan/generated/thread_safety.cpp @@ -8042,6 +8042,32 @@ void Device::PostCallRecordUpdateIndirectExecutionSetShaderEXT(VkDevice device, // Host access to indirectExecutionSet must be externally synchronized } +#ifdef VK_USE_PLATFORM_METAL_EXT +void Device::PreCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) { + StartReadObjectParentInstance(device, record_obj.location); +} + +void Device::PostCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) { + FinishReadObjectParentInstance(device, record_obj.location); +} + +void Device::PreCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) { + StartReadObjectParentInstance(device, record_obj.location); +} + +void Device::PostCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) { + FinishReadObjectParentInstance(device, record_obj.location); +} + +#endif // VK_USE_PLATFORM_METAL_EXT void Device::PreCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/thread_safety_device_defs.h b/layers/vulkan/generated/thread_safety_device_defs.h index da803fd8be2..49bf8b0b8a1 100644 --- a/layers/vulkan/generated/thread_safety_device_defs.h +++ b/layers/vulkan/generated/thread_safety_device_defs.h @@ -4069,6 +4069,24 @@ void PostCallRecordUpdateIndirectExecutionSetShaderEXT(VkDevice device, VkIndire const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites, const RecordObject& record_obj) override; +#ifdef VK_USE_PLATFORM_METAL_EXT +void PreCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, void** pHandle, + const RecordObject& record_obj) override; + +void PostCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) override; + +void PreCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) override; + +void PostCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) override; + +#endif // VK_USE_PLATFORM_METAL_EXT void PreCallRecordCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/valid_flag_values.cpp b/layers/vulkan/generated/valid_flag_values.cpp index 8f349758eed..6db891c5be7 100644 --- a/layers/vulkan/generated/valid_flag_values.cpp +++ b/layers/vulkan/generated/valid_flag_values.cpp @@ -780,6 +780,12 @@ vvl::Extensions stateless::Context::IsValidFlagValue(vvl::FlagBitmask flag_bitma return {vvl::Extension::_VK_QNX_external_memory_screen_buffer}; } } + if (value & (VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT | VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT | + VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT)) { + if (!IsExtEnabled(extensions.vk_ext_external_memory_metal)) { + return {vvl::Extension::_VK_EXT_external_memory_metal}; + } + } return {}; case vvl::FlagBitmask::VkExternalSemaphoreHandleTypeFlagBits: if (value & (VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA)) { @@ -848,6 +854,11 @@ vvl::Extensions stateless::Context::IsValidFlagValue(vvl::FlagBitmask flag_bitma return {vvl::Extension::_VK_KHR_video_encode_quantization_map}; } } + if (value & (VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR)) { + if (!IsExtEnabled(extensions.vk_khr_video_maintenance2)) { + return {vvl::Extension::_VK_KHR_video_maintenance2}; + } + } return {}; case vvl::FlagBitmask::VkVideoSessionParametersCreateFlagBitsKHR: if (value & (VK_VIDEO_SESSION_PARAMETERS_CREATE_QUANTIZATION_MAP_COMPATIBLE_BIT_KHR)) { diff --git a/layers/vulkan/generated/validation_object_methods.h b/layers/vulkan/generated/validation_object_methods.h index 4fc38be11ff..2c948c1081c 100644 --- a/layers/vulkan/generated/validation_object_methods.h +++ b/layers/vulkan/generated/validation_object_methods.h @@ -6798,6 +6798,30 @@ virtual void PreCallRecordGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPr virtual void PostCallRecordGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties, const RecordObject& record_obj) {} +#ifdef VK_USE_PLATFORM_METAL_EXT +virtual bool PreCallValidateGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const ErrorObject& error_obj) const { + return false; +} +virtual void PreCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) {} +virtual void PostCallRecordGetMemoryMetalHandleEXT(VkDevice device, const VkMemoryGetMetalHandleInfoEXT* pGetMetalHandleInfo, + void** pHandle, const RecordObject& record_obj) {} +virtual bool PreCallValidateGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const ErrorObject& error_obj) const { + return false; +} +virtual void PreCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) {} +virtual void PostCallRecordGetMemoryMetalHandlePropertiesEXT(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHandle, + VkMemoryMetalHandlePropertiesEXT* pMemoryMetalHandleProperties, + const RecordObject& record_obj) {} +#endif // VK_USE_PLATFORM_METAL_EXT virtual bool PreCallValidateCreateAccelerationStructureKHR(VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure, diff --git a/layers/vulkan/generated/vk_dispatch_table_helper.cpp b/layers/vulkan/generated/vk_dispatch_table_helper.cpp index cac1f326eeb..0449ee70026 100644 --- a/layers/vulkan/generated/vk_dispatch_table_helper.cpp +++ b/layers/vulkan/generated/vk_dispatch_table_helper.cpp @@ -3,10 +3,10 @@ /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. - * Copyright (c) 2015-2024 Google Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. + * Copyright (c) 2015-2025 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1314,6 +1314,15 @@ static VKAPI_ATTR VkResult VKAPI_CALL StubGetPhysicalDeviceCooperativeMatrixFlex VkPhysicalDevice, uint32_t*, VkCooperativeMatrixFlexibleDimensionsPropertiesNV*) { return VK_SUCCESS; } +#ifdef VK_USE_PLATFORM_METAL_EXT +static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryMetalHandleEXT(VkDevice, const VkMemoryGetMetalHandleInfoEXT*, void**) { + return VK_SUCCESS; +} +static VKAPI_ATTR VkResult VKAPI_CALL StubGetMemoryMetalHandlePropertiesEXT(VkDevice, VkExternalMemoryHandleTypeFlagBits, + const void*, VkMemoryMetalHandlePropertiesEXT*) { + return VK_SUCCESS; +} +#endif // VK_USE_PLATFORM_METAL_EXT static VKAPI_ATTR VkResult VKAPI_CALL StubCreateAccelerationStructureKHR(VkDevice, const VkAccelerationStructureCreateInfoKHR*, const VkAllocationCallbacks*, VkAccelerationStructureKHR*) { @@ -1888,6 +1897,8 @@ const auto& GetApiExtensionMap() { {"vkDestroyIndirectExecutionSetEXT", {vvl::Extension::_VK_EXT_device_generated_commands}}, {"vkUpdateIndirectExecutionSetPipelineEXT", {vvl::Extension::_VK_EXT_device_generated_commands}}, {"vkUpdateIndirectExecutionSetShaderEXT", {vvl::Extension::_VK_EXT_device_generated_commands}}, + {"vkGetMemoryMetalHandleEXT", {vvl::Extension::_VK_EXT_external_memory_metal}}, + {"vkGetMemoryMetalHandlePropertiesEXT", {vvl::Extension::_VK_EXT_external_memory_metal}}, {"vkCreateAccelerationStructureKHR", {vvl::Extension::_VK_KHR_acceleration_structure}}, {"vkDestroyAccelerationStructureKHR", {vvl::Extension::_VK_KHR_acceleration_structure}}, {"vkCmdBuildAccelerationStructuresKHR", {vvl::Extension::_VK_KHR_acceleration_structure}}, @@ -4143,6 +4154,17 @@ void layer_init_device_dispatch_table(VkDevice device, VkLayerDispatchTable* tab table->UpdateIndirectExecutionSetShaderEXT = (PFN_vkUpdateIndirectExecutionSetShaderEXT)StubUpdateIndirectExecutionSetShaderEXT; } +#ifdef VK_USE_PLATFORM_METAL_EXT + table->GetMemoryMetalHandleEXT = (PFN_vkGetMemoryMetalHandleEXT)gpa(device, "vkGetMemoryMetalHandleEXT"); + if (table->GetMemoryMetalHandleEXT == nullptr) { + table->GetMemoryMetalHandleEXT = (PFN_vkGetMemoryMetalHandleEXT)StubGetMemoryMetalHandleEXT; + } + table->GetMemoryMetalHandlePropertiesEXT = + (PFN_vkGetMemoryMetalHandlePropertiesEXT)gpa(device, "vkGetMemoryMetalHandlePropertiesEXT"); + if (table->GetMemoryMetalHandlePropertiesEXT == nullptr) { + table->GetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)StubGetMemoryMetalHandlePropertiesEXT; + } +#endif // VK_USE_PLATFORM_METAL_EXT table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)gpa(device, "vkCreateAccelerationStructureKHR"); if (table->CreateAccelerationStructureKHR == nullptr) { table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)StubCreateAccelerationStructureKHR; diff --git a/layers/vulkan/generated/vk_dispatch_table_helper.h b/layers/vulkan/generated/vk_dispatch_table_helper.h index c0ee6c1d951..14d671e4a99 100644 --- a/layers/vulkan/generated/vk_dispatch_table_helper.h +++ b/layers/vulkan/generated/vk_dispatch_table_helper.h @@ -3,10 +3,10 @@ /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. - * Copyright (c) 2015-2024 Google Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. + * Copyright (c) 2015-2025 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/layers/vulkan/generated/vk_extension_helper.cpp b/layers/vulkan/generated/vk_extension_helper.cpp index 22f71ab299c..e32257479f3 100644 --- a/layers/vulkan/generated/vk_extension_helper.cpp +++ b/layers/vulkan/generated/vk_extension_helper.cpp @@ -147,6 +147,7 @@ vvl::Extension GetExtension(std::string extension) { {"VK_KHR_shader_relaxed_extended_instruction", vvl::Extension::_VK_KHR_shader_relaxed_extended_instruction}, {"VK_KHR_maintenance7", vvl::Extension::_VK_KHR_maintenance7}, {"VK_KHR_maintenance8", vvl::Extension::_VK_KHR_maintenance8}, + {"VK_KHR_video_maintenance2", vvl::Extension::_VK_KHR_video_maintenance2}, {"VK_KHR_depth_clamp_zero_one", vvl::Extension::_VK_KHR_depth_clamp_zero_one}, {"VK_EXT_debug_report", vvl::Extension::_VK_EXT_debug_report}, {"VK_NV_glsl_shader", vvl::Extension::_VK_NV_glsl_shader}, @@ -413,6 +414,7 @@ vvl::Extension GetExtension(std::string extension) { {"VK_HUAWEI_hdr_vivid", vvl::Extension::_VK_HUAWEI_hdr_vivid}, {"VK_NV_cooperative_matrix2", vvl::Extension::_VK_NV_cooperative_matrix2}, {"VK_ARM_pipeline_opacity_micromap", vvl::Extension::_VK_ARM_pipeline_opacity_micromap}, + {"VK_EXT_external_memory_metal", vvl::Extension::_VK_EXT_external_memory_metal}, {"VK_EXT_vertex_attribute_robustness", vvl::Extension::_VK_EXT_vertex_attribute_robustness}, {"VK_KHR_acceleration_structure", vvl::Extension::_VK_KHR_acceleration_structure}, {"VK_KHR_ray_tracing_pipeline", vvl::Extension::_VK_KHR_ray_tracing_pipeline}, diff --git a/layers/vulkan/generated/vk_extension_helper.h b/layers/vulkan/generated/vk_extension_helper.h index 496840c277e..17184a17a60 100644 --- a/layers/vulkan/generated/vk_extension_helper.h +++ b/layers/vulkan/generated/vk_extension_helper.h @@ -392,6 +392,7 @@ struct DeviceExtensions : public InstanceExtensions { ExtEnabled vk_khr_shader_relaxed_extended_instruction{kNotEnabled}; ExtEnabled vk_khr_maintenance7{kNotEnabled}; ExtEnabled vk_khr_maintenance8{kNotEnabled}; + ExtEnabled vk_khr_video_maintenance2{kNotEnabled}; ExtEnabled vk_khr_depth_clamp_zero_one{kNotEnabled}; ExtEnabled vk_nv_glsl_shader{kNotEnabled}; ExtEnabled vk_ext_depth_range_unrestricted{kNotEnabled}; @@ -634,6 +635,7 @@ struct DeviceExtensions : public InstanceExtensions { ExtEnabled vk_huawei_hdr_vivid{kNotEnabled}; ExtEnabled vk_nv_cooperative_matrix2{kNotEnabled}; ExtEnabled vk_arm_pipeline_opacity_micromap{kNotEnabled}; + ExtEnabled vk_ext_external_memory_metal{kNotEnabled}; ExtEnabled vk_ext_vertex_attribute_robustness{kNotEnabled}; ExtEnabled vk_khr_acceleration_structure{kNotEnabled}; ExtEnabled vk_khr_ray_tracing_pipeline{kNotEnabled}; @@ -987,6 +989,10 @@ struct DeviceExtensions : public InstanceExtensions { Info(&DeviceExtensions::vk_khr_maintenance7, {{{&DeviceExtensions::vk_feature_version_1_1, "VK_VERSION_1_1"}}})}, {vvl::Extension::_VK_KHR_maintenance8, Info(&DeviceExtensions::vk_khr_maintenance8, {{{&DeviceExtensions::vk_feature_version_1_1, "VK_VERSION_1_1"}}})}, + {vvl::Extension::_VK_KHR_video_maintenance2, + Info(&DeviceExtensions::vk_khr_video_maintenance2, + {{{&DeviceExtensions::vk_khr_video_decode_queue, VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME}, + {&DeviceExtensions::vk_khr_video_encode_queue, VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME}}})}, {vvl::Extension::_VK_KHR_depth_clamp_zero_one, Info(&DeviceExtensions::vk_khr_depth_clamp_zero_one, {{{&DeviceExtensions::vk_khr_get_physical_device_properties2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})}, @@ -1723,6 +1729,11 @@ struct DeviceExtensions : public InstanceExtensions { {vvl::Extension::_VK_ARM_pipeline_opacity_micromap, Info(&DeviceExtensions::vk_arm_pipeline_opacity_micromap, {{{&DeviceExtensions::vk_ext_opacity_micromap, VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME}}})}, +#ifdef VK_USE_PLATFORM_METAL_EXT + {vvl::Extension::_VK_EXT_external_memory_metal, + Info(&DeviceExtensions::vk_ext_external_memory_metal, + {{{&DeviceExtensions::vk_khr_external_memory, VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME}}})}, +#endif // VK_USE_PLATFORM_METAL_EXT {vvl::Extension::_VK_EXT_vertex_attribute_robustness, Info(&DeviceExtensions::vk_ext_vertex_attribute_robustness, {{{&DeviceExtensions::vk_khr_get_physical_device_properties2, @@ -1922,6 +1933,7 @@ constexpr bool IsDeviceExtension(vvl::Extension extension) { case vvl::Extension::_VK_KHR_shader_relaxed_extended_instruction: case vvl::Extension::_VK_KHR_maintenance7: case vvl::Extension::_VK_KHR_maintenance8: + case vvl::Extension::_VK_KHR_video_maintenance2: case vvl::Extension::_VK_KHR_depth_clamp_zero_one: case vvl::Extension::_VK_NV_glsl_shader: case vvl::Extension::_VK_EXT_depth_range_unrestricted: @@ -2164,6 +2176,7 @@ constexpr bool IsDeviceExtension(vvl::Extension extension) { case vvl::Extension::_VK_HUAWEI_hdr_vivid: case vvl::Extension::_VK_NV_cooperative_matrix2: case vvl::Extension::_VK_ARM_pipeline_opacity_micromap: + case vvl::Extension::_VK_EXT_external_memory_metal: case vvl::Extension::_VK_EXT_vertex_attribute_robustness: case vvl::Extension::_VK_KHR_acceleration_structure: case vvl::Extension::_VK_KHR_ray_tracing_pipeline: diff --git a/layers/vulkan/generated/vk_function_pointers.cpp b/layers/vulkan/generated/vk_function_pointers.cpp index d77ded65800..68af4baf4e9 100644 --- a/layers/vulkan/generated/vk_function_pointers.cpp +++ b/layers/vulkan/generated/vk_function_pointers.cpp @@ -3,9 +3,9 @@ /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -818,6 +818,10 @@ PFN_vkDestroyIndirectExecutionSetEXT DestroyIndirectExecutionSetEXT; PFN_vkUpdateIndirectExecutionSetPipelineEXT UpdateIndirectExecutionSetPipelineEXT; PFN_vkUpdateIndirectExecutionSetShaderEXT UpdateIndirectExecutionSetShaderEXT; PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV; +#ifdef VK_USE_PLATFORM_METAL_EXT +PFN_vkGetMemoryMetalHandleEXT GetMemoryMetalHandleEXT; +PFN_vkGetMemoryMetalHandlePropertiesEXT GetMemoryMetalHandlePropertiesEXT; +#endif // VK_USE_PLATFORM_METAL_EXT PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR; PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR; PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR; @@ -2528,6 +2532,14 @@ void InitDeviceExtension(VkInstance instance, VkDevice device, const char* exten GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = reinterpret_cast(GetInstanceProcAddr(instance, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV")); } }, +#ifdef VK_USE_PLATFORM_METAL_EXT + { + "VK_EXT_external_memory_metal", [](VkInstance , VkDevice device) { + GetMemoryMetalHandleEXT = reinterpret_cast(GetDeviceProcAddr(device, "vkGetMemoryMetalHandleEXT")); + GetMemoryMetalHandlePropertiesEXT = reinterpret_cast(GetDeviceProcAddr(device, "vkGetMemoryMetalHandlePropertiesEXT")); + } + }, +#endif // VK_USE_PLATFORM_METAL_EXT { "VK_KHR_acceleration_structure", [](VkInstance , VkDevice device) { CreateAccelerationStructureKHR = reinterpret_cast(GetDeviceProcAddr(device, "vkCreateAccelerationStructureKHR")); @@ -3081,6 +3093,10 @@ void ResetAllExtensions() { UpdateIndirectExecutionSetPipelineEXT = nullptr; UpdateIndirectExecutionSetShaderEXT = nullptr; GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = nullptr; +#ifdef VK_USE_PLATFORM_METAL_EXT + GetMemoryMetalHandleEXT = nullptr; + GetMemoryMetalHandlePropertiesEXT = nullptr; +#endif // VK_USE_PLATFORM_METAL_EXT CreateAccelerationStructureKHR = nullptr; DestroyAccelerationStructureKHR = nullptr; CmdBuildAccelerationStructuresKHR = nullptr; diff --git a/layers/vulkan/generated/vk_function_pointers.h b/layers/vulkan/generated/vk_function_pointers.h index 6354937d642..e4cda347805 100644 --- a/layers/vulkan/generated/vk_function_pointers.h +++ b/layers/vulkan/generated/vk_function_pointers.h @@ -3,9 +3,9 @@ /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -781,6 +781,10 @@ extern PFN_vkDestroyIndirectExecutionSetEXT DestroyIndirectExecutionSetEXT; extern PFN_vkUpdateIndirectExecutionSetPipelineEXT UpdateIndirectExecutionSetPipelineEXT; extern PFN_vkUpdateIndirectExecutionSetShaderEXT UpdateIndirectExecutionSetShaderEXT; extern PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV; +#ifdef VK_USE_PLATFORM_METAL_EXT +extern PFN_vkGetMemoryMetalHandleEXT GetMemoryMetalHandleEXT; +extern PFN_vkGetMemoryMetalHandlePropertiesEXT GetMemoryMetalHandlePropertiesEXT; +#endif // VK_USE_PLATFORM_METAL_EXT extern PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR; extern PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR; extern PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR; diff --git a/layers/vulkan/generated/vk_layer_dispatch_table.h b/layers/vulkan/generated/vk_layer_dispatch_table.h index 49268c23183..e874dfd67ae 100644 --- a/layers/vulkan/generated/vk_layer_dispatch_table.h +++ b/layers/vulkan/generated/vk_layer_dispatch_table.h @@ -3,10 +3,10 @@ /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. - * Copyright (c) 2015-2024 Google Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. + * Copyright (c) 2015-2025 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -780,6 +780,10 @@ typedef struct VkLayerDispatchTable_ { PFN_vkDestroyIndirectExecutionSetEXT DestroyIndirectExecutionSetEXT; PFN_vkUpdateIndirectExecutionSetPipelineEXT UpdateIndirectExecutionSetPipelineEXT; PFN_vkUpdateIndirectExecutionSetShaderEXT UpdateIndirectExecutionSetShaderEXT; +#ifdef VK_USE_PLATFORM_METAL_EXT + PFN_vkGetMemoryMetalHandleEXT GetMemoryMetalHandleEXT; + PFN_vkGetMemoryMetalHandlePropertiesEXT GetMemoryMetalHandlePropertiesEXT; +#endif // VK_USE_PLATFORM_METAL_EXT PFN_vkCreateAccelerationStructureKHR CreateAccelerationStructureKHR; PFN_vkDestroyAccelerationStructureKHR DestroyAccelerationStructureKHR; PFN_vkCmdBuildAccelerationStructuresKHR CmdBuildAccelerationStructuresKHR; diff --git a/layers/vulkan/generated/vk_validation_error_messages.h b/layers/vulkan/generated/vk_validation_error_messages.h index 29ff7659de4..d475724f1be 100644 --- a/layers/vulkan/generated/vk_validation_error_messages.h +++ b/layers/vulkan/generated/vk_validation_error_messages.h @@ -1,6 +1,6 @@ // *** THIS FILE IS GENERATED - DO NOT EDIT *** // See generate_spec_error_message.py for modifications -// Based on Vulkan specification version: 1.4.305 +// Based on Vulkan specification version: 1.4.306 /*************************************************************************** * @@ -298,7 +298,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-RayTminKHR-RayTminKHR-04351", "The RayTminKHR decoration must be used only within the IntersectionKHR, AnyHitKHR, ClosestHitKHR, or MissKHR Execution Model", "chapters/interfaces.html"}, {"VUID-RayTminKHR-RayTminKHR-04352", "The variable decorated with RayTminKHR must be declared using the Input Storage Class", "chapters/interfaces.html"}, {"VUID-RayTminKHR-RayTminKHR-04353", "The variable decorated with RayTminKHR must be declared as a scalar 32-bit floating-point value", "chapters/interfaces.html"}, - {"VUID-RuntimeSpirv-DescriptorSet-06323", "DescriptorSet and Binding decorations must obey the constraints on Storage Class, type, and descriptor type described in DescriptorSet and Binding Assignment", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-InputAttachmentArrayNonUniformIndexing-10138", "If the InputAttachmentArrayNonUniformIndexing capability is not declared, and an instruction accesses memory through an input attachment, the input attachment through which that memory is accessed must be dynamically uniform within the invocation group or subgroup", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-LocalSizeId-06434", "If Execution Mode LocalSizeId is used, maintenance4 must be enabled", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-Location-06272", "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 Execution Model defined in Shader Input and Output Locations", "appendices/spirvenv.html"}, @@ -1235,7 +1234,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBlitImageInfo2-dstOffset-00249", "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", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-dstOffset-00251", "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", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-dstSubresource-01706", "The dstSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when dstImage was created", "chapters/copies.html"}, - {"VUID-VkBlitImageInfo2-dstSubresource-01708", "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, 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", "chapters/copies.html"}, + {"VUID-VkBlitImageInfo2-dstSubresource-01708", "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, 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", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-filter-00237", "If filter is VK_FILTER_CUBIC_EXT, srcImage must be of type VK_IMAGE_TYPE_2D", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-filter-02001", "If filter is VK_FILTER_LINEAR, then the format features of srcImage must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-filter-02002", "If filter is VK_FILTER_CUBIC_EXT, then the format features of srcImage must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT", "chapters/copies.html"}, @@ -1754,7 +1753,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyBufferToImageInfo2-dstImage-07978", "If dstImage has a depth/stencil format, the bufferOffset member of any element of pRegions must be a multiple of 4", "chapters/copies.html"}, {"VUID-VkCopyBufferToImageInfo2-dstImage-07979", "If 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", "chapters/copies.html"}, {"VUID-VkCopyBufferToImageInfo2-dstImage-07980", "If 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", "chapters/copies.html"}, - {"VUID-VkCopyBufferToImageInfo2-dstImage-07981", "If dstImage has a multi-planar image format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyBufferToImageInfo2-dstImage-07981", "If dstImage has a multi-planar format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyBufferToImageInfo2-dstImage-07983", "If dstImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-VkCopyBufferToImageInfo2-dstImage-parameter", "dstImage must be a valid VkImage handle", "chapters/copies.html"}, {"VUID-VkCopyBufferToImageInfo2-dstImageLayout-00180", "dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice", "chapters/copies.html"}, @@ -1825,7 +1824,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageInfo2-aspectMask-00143", "For each element of pRegions, dstSubresource.aspectMask must specify aspects present in dstImage", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-commonparent", "Both of dstImage, and srcImage must have been created, allocated, or retrieved from the same VkDevice", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-00152", "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", "chapters/copies.html"}, - {"VUID-VkCopyImageInfo2-dstImage-01557", "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", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-dstImage-01557", "If dstImage has a multi-planar 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", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-01732", "For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-01733", "For each element of pRegions, if the sum of dstOffset.y and extent.height does not equal the height of the subresource specified by dstSubresource, extent.height must be a multiple of the texel block extent height of the VkFormat of dstImage", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-01734", "For each element of pRegions, if the sum of dstOffset.z and extent.depth does not equal the depth of the subresource specified by dstSubresource, extent.depth must be a multiple of the texel block extent depth of the VkFormat of dstImage", "chapters/copies.html"}, @@ -1836,7 +1835,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageInfo2-dstImage-04444", "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", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-07966", "If dstImage is non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a single VkDeviceMemory object", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-07969", "dstImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "chapters/copies.html"}, - {"VUID-VkCopyImageInfo2-dstImage-08714", "If dstImage has a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-dstImage-08714", "If dstImage has a multi-planar format, then for each element of pRegions, dstSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImage-parameter", "dstImage must be a valid VkImage handle", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImageLayout-00133", "dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstImageLayout-01395", "dstImageLayout must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, or VK_IMAGE_LAYOUT_GENERAL", "chapters/copies.html"}, @@ -1862,8 +1861,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageInfo2-srcImage-00136", "The sample count of srcImage and dstImage must match", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-00146", "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", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-01548", "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", "chapters/copies.html"}, - {"VUID-VkCopyImageInfo2-srcImage-01551", "If neither srcImage nor dstImage has a multi-planar image format and the maintenance8 feature is not enabled then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match", "chapters/copies.html"}, - {"VUID-VkCopyImageInfo2-srcImage-01556", "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", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcImage-01551", "If neither srcImage nor dstImage has a multi-planar format and the maintenance8 feature is not enabled then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcImage-01556", "If srcImage has a multi-planar 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", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-01728", "For each element of pRegions, if the sum of srcOffset.x and extent.width does not equal the width of the subresource specified by srcSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-01729", "For each element of pRegions, if the sum of srcOffset.y and extent.height does not equal the height of the subresource specified by srcSubresource, extent.height must be a multiple of the texel block extent height of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-01730", "For each element of pRegions, if the sum of srcOffset.z and extent.depth does not equal the depth of the subresource specified by srcSubresource, extent.depth must be a multiple of the texel block extent depth of the VkFormat of srcImage", "chapters/copies.html"}, @@ -1876,7 +1875,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageInfo2-srcImage-07743", "If srcImage and dstImage have a different VkImageType, and the maintenance5 feature is not enabled, one must be VK_IMAGE_TYPE_3D and the other must be VK_IMAGE_TYPE_2D", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-07966", "If srcImage is non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a single VkDeviceMemory object", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-07969", "srcImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "chapters/copies.html"}, - {"VUID-VkCopyImageInfo2-srcImage-08713", "If srcImage has a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcImage-08713", "If srcImage has a multi-planar format, then for each element of pRegions, srcSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-08793", "If srcImage and dstImage have the same VkImageType, for each element of pRegions, if neither of the layerCount members of srcSubresource or dstSubresource are VK_REMAINING_ARRAY_LAYERS, the layerCount members of srcSubresource or dstSubresource must match", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-08794", "If srcImage and dstImage have the same VkImageType, and one of the layerCount members of srcSubresource or dstSubresource is VK_REMAINING_ARRAY_LAYERS, the other member must be either VK_REMAINING_ARRAY_LAYERS or equal to the arrayLayers member of the VkImageCreateInfo used to create the image minus baseArrayLayer", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcImage-09247", "If the VkFormat of each of srcImage and dstImage is a compressed image format, the formats must have the same texel block extent", "chapters/copies.html"}, @@ -1940,7 +1939,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageToBufferInfo2-srcImage-07978", "If srcImage has a depth/stencil format, the bufferOffset member of any element of pRegions must be a multiple of 4", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-srcImage-07979", "If 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", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-srcImage-07980", "If 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", "chapters/copies.html"}, - {"VUID-VkCopyImageToBufferInfo2-srcImage-07981", "If srcImage has a multi-planar image format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyImageToBufferInfo2-srcImage-07981", "If srcImage has a multi-planar format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-srcImage-07983", "If srcImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-srcImage-parameter", "srcImage must be a valid VkImage handle", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-srcImageLayout-00189", "srcImageLayout must specify the layout of the image subresources of srcImage specified in pRegions at the time this command is executed on a VkDevice", "chapters/copies.html"}, @@ -1961,7 +1960,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageToImageInfo-dstImage-07969", "dstImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-dstImage-07979", "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", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-dstImage-07980", "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", "chapters/copies.html"}, - {"VUID-VkCopyImageToImageInfo-dstImage-07981", "If dstImage has a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyImageToImageInfo-dstImage-07981", "If dstImage has a multi-planar format, then for each element of pRegions, dstSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-dstImage-07983", "If dstImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, dstSubresource.baseArrayLayer must be 0 and dstSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-dstImage-09109", "If dstImage is sparse then all memory ranges accessed by the copy command must be bound as described in Binding Resource Memory", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-dstImage-09111", "If the stencil aspect of dstImage is accessed, and dstImage was not created with separate stencil usage, dstImage must have been created with VK_IMAGE_USAGE_HOST_TRANSFER_BIT set in VkImageCreateInfo::usage", "chapters/copies.html"}, @@ -2003,7 +2002,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageToImageInfo-srcImage-07969", "srcImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-srcImage-07979", "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", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-srcImage-07980", "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", "chapters/copies.html"}, - {"VUID-VkCopyImageToImageInfo-srcImage-07981", "If srcImage has a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyImageToImageInfo-srcImage-07981", "If srcImage has a multi-planar format, then for each element of pRegions, srcSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-srcImage-07983", "If srcImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, srcSubresource.baseArrayLayer must be 0 and srcSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-srcImage-09069", "srcImage and dstImage must have been created with identical image creation parameters", "chapters/copies.html"}, {"VUID-VkCopyImageToImageInfo-srcImage-09109", "If srcImage is sparse then all memory ranges accessed by the copy command must be bound as described in Binding Resource Memory", "chapters/copies.html"}, @@ -2067,7 +2066,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageToMemoryInfo-srcImage-07973", "srcImage must have a sample count equal to VK_SAMPLE_COUNT_1_BIT", "chapters/copies.html"}, {"VUID-VkCopyImageToMemoryInfo-srcImage-07979", "If 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", "chapters/copies.html"}, {"VUID-VkCopyImageToMemoryInfo-srcImage-07980", "If 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", "chapters/copies.html"}, - {"VUID-VkCopyImageToMemoryInfo-srcImage-07981", "If srcImage has a multi-planar image format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyImageToMemoryInfo-srcImage-07981", "If srcImage has a multi-planar format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyImageToMemoryInfo-srcImage-07983", "If srcImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-VkCopyImageToMemoryInfo-srcImage-09109", "If srcImage is sparse then all memory ranges accessed by the copy command must be bound as described in Binding Resource Memory", "chapters/copies.html"}, {"VUID-VkCopyImageToMemoryInfo-srcImage-09111", "If the stencil aspect of srcImage is accessed, and srcImage was not created with separate stencil usage, srcImage must have been created with VK_IMAGE_USAGE_HOST_TRANSFER_BIT set in VkImageCreateInfo::usage", "chapters/copies.html"}, @@ -2106,7 +2105,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyMemoryToImageInfo-dstImage-07973", "dstImage must have a sample count equal to VK_SAMPLE_COUNT_1_BIT", "chapters/copies.html"}, {"VUID-VkCopyMemoryToImageInfo-dstImage-07979", "If 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", "chapters/copies.html"}, {"VUID-VkCopyMemoryToImageInfo-dstImage-07980", "If 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", "chapters/copies.html"}, - {"VUID-VkCopyMemoryToImageInfo-dstImage-07981", "If dstImage has a multi-planar image format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-VkCopyMemoryToImageInfo-dstImage-07981", "If dstImage has a multi-planar format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-VkCopyMemoryToImageInfo-dstImage-07983", "If dstImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-VkCopyMemoryToImageInfo-dstImage-09109", "If dstImage is sparse then all memory ranges accessed by the copy command must be bound as described in Binding Resource Memory", "chapters/copies.html"}, {"VUID-VkCopyMemoryToImageInfo-dstImage-09111", "If the stencil aspect of dstImage is accessed, and dstImage was not created with separate stencil usage, dstImage must have been created with VK_IMAGE_USAGE_HOST_TRANSFER_BIT set in VkImageCreateInfo::usage", "chapters/copies.html"}, @@ -2624,13 +2623,13 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkDeviceImageSubresourceInfo-format-04462", "If format of the pCreateInfo has a depth component, the aspectMask member of pSubresource must contain VK_IMAGE_ASPECT_DEPTH_BIT", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-format-04463", "If format of the pCreateInfo has a stencil component, the aspectMask member of pSubresource must contain VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-format-04464", "If format of the pCreateInfo 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", "chapters/resources.html"}, - {"VUID-VkDeviceImageSubresourceInfo-format-08886", "If format of the image is a color format that is not a multi-planar image format, and tiling of the pCreateInfo is VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_OPTIMAL, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_COLOR_BIT", "chapters/resources.html"}, + {"VUID-VkDeviceImageSubresourceInfo-format-08886", "If format of the image is a color format that is not a multi-planar format, and tiling of the pCreateInfo is VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_OPTIMAL, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_COLOR_BIT", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-mipLevel-01716", "The mipLevel member of pSubresource must be less than the mipLevels specified in pCreateInfo", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-pCreateInfo-parameter", "pCreateInfo must be a valid pointer to a valid VkImageCreateInfo structure", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-pNext-pNext", "pNext must be NULL", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-pSubresource-parameter", "pSubresource must be a valid pointer to a valid VkImageSubresource2 structure", "chapters/resources.html"}, {"VUID-VkDeviceImageSubresourceInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO", "chapters/resources.html"}, - {"VUID-VkDeviceImageSubresourceInfo-tiling-08717", "If the tiling of the pCreateInfo is VK_IMAGE_TILING_LINEAR and has a multi-planar image format, then the aspectMask member of pSubresource must be a single valid multi-planar aspect mask bit", "chapters/resources.html"}, + {"VUID-VkDeviceImageSubresourceInfo-tiling-08717", "If the tiling of the pCreateInfo is VK_IMAGE_TILING_LINEAR and has a multi-planar format, then the aspectMask member of pSubresource must be a single valid multi-planar aspect mask bit", "chapters/resources.html"}, {"VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336", "memory must have been allocated with VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT", "chapters/memory.html"}, {"VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter", "memory must be a valid VkDeviceMemory handle", "chapters/memory.html"}, {"VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext", "pNext must be NULL", "chapters/memory.html"}, @@ -4236,6 +4235,13 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749", "pHostPointer must be a pointer aligned to an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT::minImportedHostPointerAlignment", "chapters/memory.html"}, {"VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-parameter", "pHostPointer must be a pointer value", "chapters/memory.html"}, {"VUID-VkImportMemoryHostPointerInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-handle-10409", "The memory from which handle was exported must have been created on the same underlying physical device as device", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-handle-10412", "handle must obey any requirements listed for handleType in external memory handle types compatibility", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-handleType-10408", "If handleType is not 0, it must be supported for import, as reported by VkExternalImageFormatProperties or VkExternalBufferProperties", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-handleType-10410", "If handleType is not 0, it must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT or VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-handleType-10411", "If handleType is not 0 , handle must be a valid non-NULL handle of the type specified by handleType", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-handleType-parameter", "If handleType is not 0, handleType must be a valid VkExternalMemoryHandleTypeFlagBits value", "chapters/memory.html"}, + {"VUID-VkImportMemoryMetalHandleInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT", "chapters/memory.html"}, {"VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659", "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", "chapters/memory.html"}, {"VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441", "If handle is not NULL, name must be NULL", "chapters/memory.html"}, {"VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518", "If handle is not NULL, it must obey any requirements listed for handleType in external memory handle types compatibility", "chapters/memory.html"}, @@ -4530,7 +4536,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkMemoryAllocateInfo-pNext-08944", "If the parameters define an import operation, the external handle is a QNX Screen buffer, and the pNext chain includes a VkMemoryDedicatedAllocateInfo with image that is not VK_NULL_HANDLE, the QNX Screen's buffer must be a valid QNX Screen buffer", "chapters/memory.html"}, {"VUID-VkMemoryAllocateInfo-pNext-08945", "If the parameters define an import operation, the external handle is an QNX Screen 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 vkGetScreenBufferPropertiesQNX in VkScreenBufferFormatPropertiesQNX::format for the QNX Screen buffer", "chapters/memory.html"}, {"VUID-VkMemoryAllocateInfo-pNext-08946", "If the parameters define an import operation, the external handle is a QNX Screen 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 QNX Screen buffer's _screen_buffer must be identical", "chapters/memory.html"}, - {"VUID-VkMemoryAllocateInfo-pNext-pNext", "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, VkImportScreenBufferInfoQNX, VkMemoryAllocateFlagsInfo, VkMemoryDedicatedAllocateInfo, VkMemoryOpaqueCaptureAddressAllocateInfo, or VkMemoryPriorityAllocateInfoEXT", "chapters/memory.html"}, + {"VUID-VkMemoryAllocateInfo-pNext-10395", "If the parameters define an import operation and the external handle is a VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT, then pNext must include a VkMemoryDedicatedAllocateInfo with image that is not VK_NULL_HANDLE", "chapters/memory.html"}, + {"VUID-VkMemoryAllocateInfo-pNext-10396", "If the parameters define an import operation, the external handle is a Metal MTLTexture, and the pNext chain includes a VkMemoryDedicatedAllocateInfo structure with image that is not VK_NULL_HANDLE, the width, height, array layer dimensions, and mipmap levels of image and the Metal MTLTexture's must be identical", "chapters/memory.html"}, + {"VUID-VkMemoryAllocateInfo-pNext-10397", "If the parameters define an import operation, the external handle is a Metal MTLTexture, and the pNext chain includes a VkMemoryDedicatedAllocateInfo structure with image that is not VK_NULL_HANDLE, allocationSize must be 0", "chapters/memory.html"}, + {"VUID-VkMemoryAllocateInfo-pNext-pNext", "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, VkImportMemoryMetalHandleInfoEXT, VkImportMemoryWin32HandleInfoKHR, VkImportMemoryWin32HandleInfoNV, VkImportMemoryZirconHandleInfoFUCHSIA, VkImportMetalBufferInfoEXT, VkImportScreenBufferInfoQNX, VkMemoryAllocateFlagsInfo, VkMemoryDedicatedAllocateInfo, VkMemoryOpaqueCaptureAddressAllocateInfo, or VkMemoryPriorityAllocateInfoEXT", "chapters/memory.html"}, {"VUID-VkMemoryAllocateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO", "chapters/memory.html"}, {"VUID-VkMemoryAllocateInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique, with the exception of structures of type VkExportMetalObjectCreateInfoEXT", "chapters/memory.html"}, {"VUID-VkMemoryAllocateInfo-screenBufferImport-08941", "If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX, VkPhysicalDeviceExternalMemoryScreenBufferFeaturesQNX::screenBufferImport must be enabled", "chapters/memory.html"}, @@ -4680,6 +4689,13 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkMemoryGetFdInfoKHR-memory-parameter", "memory must be a valid VkDeviceMemory handle", "chapters/memory.html"}, {"VUID-VkMemoryGetFdInfoKHR-pNext-pNext", "pNext must be NULL", "chapters/memory.html"}, {"VUID-VkMemoryGetFdInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-handleType-10414", "handleType must have been included in VkExportMemoryAllocateInfo::handleTypes when memory was created", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-handleType-10415", "handleType must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT or VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-handleType-parameter", "handleType must be a valid VkExternalMemoryHandleTypeFlagBits value", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-memory-10413", "memory must have been created with a valid VkExportMemoryAllocateInfo", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-memory-parameter", "memory must be a valid VkDeviceMemory handle", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-pNext-pNext", "pNext must be NULL", "chapters/memory.html"}, + {"VUID-VkMemoryGetMetalHandleInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT", "chapters/memory.html"}, {"VUID-VkMemoryGetRemoteAddressInfoNV-handleType-04966", "handleType must have been included in VkExportMemoryAllocateInfo::handleTypes when memory was created", "chapters/memory.html"}, {"VUID-VkMemoryGetRemoteAddressInfoNV-handleType-parameter", "handleType must be a valid VkExternalMemoryHandleTypeFlagBits value", "chapters/memory.html"}, {"VUID-VkMemoryGetRemoteAddressInfoNV-memory-parameter", "memory must be a valid VkDeviceMemory handle", "chapters/memory.html"}, @@ -4723,6 +4739,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkMemoryMapPlacedInfoEXT-pPlacedAddress-09577", "pPlacedAddress must be aligned to an integer multiple of VkPhysicalDeviceMapMemoryPlacedPropertiesEXT::minPlacedMemoryMapAlignment", "chapters/memory.html"}, {"VUID-VkMemoryMapPlacedInfoEXT-pPlacedAddress-09578", "The address range specified by pPlacedAddress and VkMemoryMapInfo::size must not overlap any existing Vulkan memory object mapping", "chapters/memory.html"}, {"VUID-VkMemoryMapPlacedInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_MAP_PLACED_INFO_EXT", "chapters/memory.html"}, + {"VUID-VkMemoryMetalHandlePropertiesEXT-pNext-pNext", "pNext must be NULL", "chapters/memory.html"}, + {"VUID-VkMemoryMetalHandlePropertiesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT", "chapters/memory.html"}, {"VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO", "chapters/memory.html"}, {"VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602", "priority must be between 0 and 1, inclusive", "chapters/memory.html"}, {"VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT", "chapters/memory.html"}, @@ -5255,6 +5273,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDeviceVideoFormatInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR", "chapters/videocoding.html"}, {"VUID-VkPhysicalDeviceVideoFormatInfoKHR-sType-unique", "The sType value of each struct in the pNext chain must be unique", "chapters/videocoding.html"}, {"VUID-VkPhysicalDeviceVideoMaintenance1FeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR", "chapters/features.html"}, + {"VUID-VkPhysicalDeviceVideoMaintenance2FeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR", "chapters/features.html"}, {"VUID-VkPhysicalDeviceVulkan11Features-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES", "chapters/features.html"}, {"VUID-VkPhysicalDeviceVulkan11Properties-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES", "chapters/devsandqueues.html"}, {"VUID-VkPhysicalDeviceVulkan12Features-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES", "chapters/features.html"}, @@ -7137,11 +7156,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkVideoBeginCodingInfoKHR-slotIndex-07245", "If videoSession was created with a decode operation and the slotIndex member of any element of pReferenceSlots is not negative, then the image view specified in pPictureResource->imageViewBinding for that element must have been created with VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-slotIndex-07246", "If videoSession was created with an encode operation and the slotIndex member of any element of pReferenceSlots is not negative, then the image view specified in pPictureResource->imageViewBinding for that element must have been created with VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07237", "videoSession must have memory bound to all of its memory bindings returned by vkGetVideoSessionMemoryRequirementsKHR for videoSession", "chapters/videocoding.html"}, - {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07247", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE", "chapters/videocoding.html"}, - {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07248", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE", "chapters/videocoding.html"}, + {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07247", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE , unless videoMaintenance2 is enabled", "chapters/videocoding.html"}, + {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07248", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE , unless videoMaintenance2 is enabled", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07249", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-videoSession-07250", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE", "chapters/videocoding.html"}, - {"VUID-VkVideoBeginCodingInfoKHR-videoSession-09261", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE", "chapters/videocoding.html"}, + {"VUID-VkVideoBeginCodingInfoKHR-videoSession-09261", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE , unless videoMaintenance2 is enabled", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-videoSession-10283", "If videoSession was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR, then videoSessionParameters must not be VK_NULL_HANDLE", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-videoSession-parameter", "videoSession must be a valid VkVideoSessionKHR handle", "chapters/videocoding.html"}, {"VUID-VkVideoBeginCodingInfoKHR-videoSessionParameters-04857", "If videoSessionParameters is not VK_NULL_HANDLE, it must have been created with videoSession specified in VkVideoSessionParametersCreateInfoKHR::videoSession", "chapters/videocoding.html"}, @@ -7160,6 +7179,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkVideoDecodeAV1CapabilitiesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeAV1DpbSlotInfoKHR-pStdReferenceInfo-parameter", "pStdReferenceInfo must be a valid pointer to a valid StdVideoDecodeAV1ReferenceInfo value", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeAV1DpbSlotInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeAV1InlineSessionParametersInfoKHR-pStdSequenceHeader-parameter", "If pStdSequenceHeader is not NULL, pStdSequenceHeader must be a valid pointer to a valid StdVideoAV1SequenceHeader value", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeAV1InlineSessionParametersInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_INLINE_SESSION_PARAMETERS_INFO_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeAV1PictureInfoKHR-pStdPictureInfo-parameter", "pStdPictureInfo must be a valid pointer to a valid StdVideoDecodeAV1PictureInfo value", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeAV1PictureInfoKHR-pTileOffsets-parameter", "pTileOffsets must be a valid pointer to an array of tileCount uint32_t values", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeAV1PictureInfoKHR-pTileSizes-parameter", "pTileSizes must be a valid pointer to an array of tileCount uint32_t values", "chapters/videocoding.html"}, @@ -7172,6 +7193,9 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkVideoDecodeH264CapabilitiesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH264DpbSlotInfoKHR-pStdReferenceInfo-parameter", "pStdReferenceInfo must be a valid pointer to a valid StdVideoDecodeH264ReferenceInfo value", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH264DpbSlotInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH264InlineSessionParametersInfoKHR-pStdPPS-parameter", "If pStdPPS is not NULL, pStdPPS must be a valid pointer to a valid StdVideoH264PictureParameterSet value", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH264InlineSessionParametersInfoKHR-pStdSPS-parameter", "If pStdSPS is not NULL, pStdSPS must be a valid pointer to a valid StdVideoH264SequenceParameterSet value", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH264InlineSessionParametersInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_INLINE_SESSION_PARAMETERS_INFO_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH264PictureInfoKHR-pSliceOffsets-parameter", "pSliceOffsets must be a valid pointer to an array of sliceCount uint32_t values", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH264PictureInfoKHR-pStdPictureInfo-parameter", "pStdPictureInfo must be a valid pointer to a valid StdVideoDecodeH264PictureInfo value", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH264PictureInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR", "chapters/videocoding.html"}, @@ -7188,6 +7212,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkVideoDecodeH265CapabilitiesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH265DpbSlotInfoKHR-pStdReferenceInfo-parameter", "pStdReferenceInfo must be a valid pointer to a valid StdVideoDecodeH265ReferenceInfo value", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH265DpbSlotInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH265InlineSessionParametersInfoKHR-pStdPPS-parameter", "If pStdPPS is not NULL, pStdPPS must be a valid pointer to a valid StdVideoH265PictureParameterSet value", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH265InlineSessionParametersInfoKHR-pStdSPS-parameter", "If pStdSPS is not NULL, pStdSPS must be a valid pointer to a valid StdVideoH265SequenceParameterSet value", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH265InlineSessionParametersInfoKHR-pStdVPS-parameter", "If pStdVPS is not NULL, pStdVPS must be a valid pointer to a valid StdVideoH265VideoParameterSet value", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeH265InlineSessionParametersInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_INLINE_SESSION_PARAMETERS_INFO_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH265PictureInfoKHR-pSliceSegmentOffsets-parameter", "pSliceSegmentOffsets must be a valid pointer to an array of sliceSegmentCount uint32_t values", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH265PictureInfoKHR-pStdPictureInfo-parameter", "pStdPictureInfo must be a valid pointer to a valid StdVideoDecodeH265PictureInfo value", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeH265PictureInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR", "chapters/videocoding.html"}, @@ -7204,7 +7232,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkVideoDecodeH265SessionParametersCreateInfoKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeInfoKHR-dstPictureResource-parameter", "dstPictureResource must be a valid VkVideoPictureResourceInfoKHR structure", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeInfoKHR-flags-zerobitmask", "flags must be 0", "chapters/videocoding.html"}, - {"VUID-VkVideoDecodeInfoKHR-pNext-pNext", "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 VkVideoDecodeAV1PictureInfoKHR, VkVideoDecodeH264PictureInfoKHR, VkVideoDecodeH265PictureInfoKHR, or VkVideoInlineQueryInfoKHR", "chapters/videocoding.html"}, + {"VUID-VkVideoDecodeInfoKHR-pNext-pNext", "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 VkVideoDecodeAV1InlineSessionParametersInfoKHR, VkVideoDecodeAV1PictureInfoKHR, VkVideoDecodeH264InlineSessionParametersInfoKHR, VkVideoDecodeH264PictureInfoKHR, VkVideoDecodeH265InlineSessionParametersInfoKHR, VkVideoDecodeH265PictureInfoKHR, or VkVideoInlineQueryInfoKHR", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeInfoKHR-pPictureResource-07172", "The pPictureResource member of each element of pReferenceSlots must not be NULL", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeInfoKHR-pReferenceSlots-parameter", "If referenceSlotCount is not 0, pReferenceSlots must be a valid pointer to an array of referenceSlotCount valid VkVideoReferenceSlotInfoKHR structures", "chapters/videocoding.html"}, {"VUID-VkVideoDecodeInfoKHR-pSetupReferenceSlot-07168", "If pSetupReferenceSlot is not NULL, then its slotIndex member must not be negative", "chapters/videocoding.html"}, @@ -7459,6 +7487,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkVideoSessionCreateInfoKHR-flags-10266", "If flags includes VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR, then it must not also include VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoSessionCreateInfoKHR-flags-10267", "If VkVideoEncodeCapabilitiesKHR::flags does not include VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile specified by pVideoProfile, then flags must not include VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR", "chapters/videocoding.html"}, {"VUID-VkVideoSessionCreateInfoKHR-flags-10268", "If VkVideoEncodeCapabilitiesKHR::flags does not include VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile specified by pVideoProfile, then flags must not include VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_EMPHASIS_MAP_BIT_KHR", "chapters/videocoding.html"}, + {"VUID-VkVideoSessionCreateInfoKHR-flags-10398", "If flags includes VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, then videoMaintenance2 must be enabled", "chapters/videocoding.html"}, + {"VUID-VkVideoSessionCreateInfoKHR-flags-10399", "If flags includes VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, then pVideoProfile->videoCodecOperation must specify a decode operation", "chapters/videocoding.html"}, {"VUID-VkVideoSessionCreateInfoKHR-flags-parameter", "flags must be a valid combination of VkVideoSessionCreateFlagBitsKHR values", "chapters/videocoding.html"}, {"VUID-VkVideoSessionCreateInfoKHR-maxActiveReferencePictures-04849", "maxActiveReferencePictures must be less than or equal to VkVideoCapabilitiesKHR::maxActiveReferencePictures, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile specified by pVideoProfile", "chapters/videocoding.html"}, {"VUID-VkVideoSessionCreateInfoKHR-maxCodedExtent-04851", "maxCodedExtent must be between VkVideoCapabilitiesKHR::minCodedExtent and VkVideoCapabilitiesKHR::maxCodedExtent, inclusive, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile specified by pVideoProfile", "chapters/videocoding.html"}, @@ -8346,7 +8376,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdBlitImage-dstOffset-00249", "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", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-dstOffset-00251", "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", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-dstSubresource-01706", "The dstSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when dstImage was created", "chapters/copies.html"}, - {"VUID-vkCmdBlitImage-dstSubresource-01708", "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, 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", "chapters/copies.html"}, + {"VUID-vkCmdBlitImage-dstSubresource-01708", "If dstSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, 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", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-filter-00237", "If filter is VK_FILTER_CUBIC_EXT, srcImage must be of type VK_IMAGE_TYPE_2D", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-filter-02001", "If filter is VK_FILTER_LINEAR, then the format features of srcImage must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-filter-02002", "If filter is VK_FILTER_CUBIC_EXT, then the format features of srcImage must contain VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT", "chapters/copies.html"}, @@ -8770,7 +8800,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyBufferToImage-dstImage-07978", "If dstImage has a depth/stencil format, the bufferOffset member of any element of pRegions must be a multiple of 4", "chapters/copies.html"}, {"VUID-vkCmdCopyBufferToImage-dstImage-07979", "If 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", "chapters/copies.html"}, {"VUID-vkCmdCopyBufferToImage-dstImage-07980", "If 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", "chapters/copies.html"}, - {"VUID-vkCmdCopyBufferToImage-dstImage-07981", "If dstImage has a multi-planar image format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-vkCmdCopyBufferToImage-dstImage-07981", "If dstImage has a multi-planar format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-vkCmdCopyBufferToImage-dstImage-07983", "If dstImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-vkCmdCopyBufferToImage-dstImage-parameter", "dstImage must be a valid VkImage handle", "chapters/copies.html"}, {"VUID-vkCmdCopyBufferToImage-dstImageLayout-00180", "dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice", "chapters/copies.html"}, @@ -8834,7 +8864,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-commandBuffer-recording", "commandBuffer must be in the recording state", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-commonparent", "Each of commandBuffer, dstImage, and srcImage must have been created, allocated, or retrieved from the same VkDevice", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-00152", "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", "chapters/copies.html"}, - {"VUID-vkCmdCopyImage-dstImage-01557", "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", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-dstImage-01557", "If dstImage has a multi-planar 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", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-01732", "For each element of pRegions, if the sum of dstOffset.x and extent.width does not equal the width of the subresource specified by dstSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of dstImage", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-01733", "For each element of pRegions, if the sum of dstOffset.y and extent.height does not equal the height of the subresource specified by dstSubresource, extent.height must be a multiple of the texel block extent height of the VkFormat of dstImage", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-01734", "For each element of pRegions, if the sum of dstOffset.z and extent.depth does not equal the depth of the subresource specified by dstSubresource, extent.depth must be a multiple of the texel block extent depth of the VkFormat of dstImage", "chapters/copies.html"}, @@ -8845,7 +8875,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-dstImage-04444", "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", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-07966", "If dstImage is non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a single VkDeviceMemory object", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-07969", "dstImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "chapters/copies.html"}, - {"VUID-vkCmdCopyImage-dstImage-08714", "If dstImage has a multi-planar image format, then for each element of pRegions, dstSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-dstImage-08714", "If dstImage has a multi-planar format, then for each element of pRegions, dstSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImage-parameter", "dstImage must be a valid VkImage handle", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImageLayout-00133", "dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstImageLayout-01395", "dstImageLayout must be VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, or VK_IMAGE_LAYOUT_GENERAL", "chapters/copies.html"}, @@ -8870,8 +8900,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-srcImage-00136", "The sample count of srcImage and dstImage must match", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-00146", "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", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-01548", "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", "chapters/copies.html"}, - {"VUID-vkCmdCopyImage-srcImage-01551", "If neither srcImage nor dstImage has a multi-planar image format and the maintenance8 feature is not enabled then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match", "chapters/copies.html"}, - {"VUID-vkCmdCopyImage-srcImage-01556", "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", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcImage-01551", "If neither srcImage nor dstImage has a multi-planar format and the maintenance8 feature is not enabled then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcImage-01556", "If srcImage has a multi-planar 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", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-01728", "For each element of pRegions, if the sum of srcOffset.x and extent.width does not equal the width of the subresource specified by srcSubresource, extent.width must be a multiple of the texel block extent width of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-01729", "For each element of pRegions, if the sum of srcOffset.y and extent.height does not equal the height of the subresource specified by srcSubresource, extent.height must be a multiple of the texel block extent height of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-01730", "For each element of pRegions, if the sum of srcOffset.z and extent.depth does not equal the depth of the subresource specified by srcSubresource, extent.depth must be a multiple of the texel block extent depth of the VkFormat of srcImage", "chapters/copies.html"}, @@ -8884,7 +8914,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-srcImage-07743", "If srcImage and dstImage have a different VkImageType, and the maintenance5 feature is not enabled, one must be VK_IMAGE_TYPE_3D and the other must be VK_IMAGE_TYPE_2D", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-07966", "If srcImage is non-sparse then the image or the specified disjoint plane must be bound completely and contiguously to a single VkDeviceMemory object", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-07969", "srcImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "chapters/copies.html"}, - {"VUID-vkCmdCopyImage-srcImage-08713", "If srcImage has a multi-planar image format, then for each element of pRegions, srcSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcImage-08713", "If srcImage has a multi-planar format, then for each element of pRegions, srcSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-08793", "If srcImage and dstImage have the same VkImageType, for each element of pRegions, if neither of the layerCount members of srcSubresource or dstSubresource are VK_REMAINING_ARRAY_LAYERS, the layerCount members of srcSubresource or dstSubresource must match", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-08794", "If srcImage and dstImage have the same VkImageType, and one of the layerCount members of srcSubresource or dstSubresource is VK_REMAINING_ARRAY_LAYERS, the other member must be either VK_REMAINING_ARRAY_LAYERS or equal to the arrayLayers member of the VkImageCreateInfo used to create the image minus baseArrayLayer", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcImage-09247", "If the VkFormat of each of srcImage and dstImage is a compressed image format, the formats must have the same texel block extent", "chapters/copies.html"}, @@ -8968,7 +8998,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImageToBuffer-srcImage-07978", "If srcImage has a depth/stencil format, the bufferOffset member of any element of pRegions must be a multiple of 4", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-07979", "If 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", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-07980", "If 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", "chapters/copies.html"}, - {"VUID-vkCmdCopyImageToBuffer-srcImage-07981", "If srcImage has a multi-planar image format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, + {"VUID-vkCmdCopyImageToBuffer-srcImage-07981", "If srcImage has a multi-planar format, then for each element of pRegions, imageSubresource.aspectMask must be a single valid multi-planar aspect mask bit", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-07983", "If srcImage is of type VK_IMAGE_TYPE_3D, for each element of pRegions, imageSubresource.baseArrayLayer must be 0 and imageSubresource.layerCount must be 1", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-parameter", "srcImage must be a valid VkImage handle", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189", "srcImageLayout must specify the layout of the image subresources of srcImage specified in pRegions at the time this command is executed on a VkDevice", "chapters/copies.html"}, @@ -9119,11 +9149,14 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDecodeVideoKHR-None-07011", "The bound video session must not be in uninitialized state at the time the command is executed on the device", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-None-07258", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR but was not created with interlaced frame support, then the decode output picture must represent a frame", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-None-08249", "The bound video session must have been created with a decode operation", "chapters/videocoding.html"}, - {"VUID-vkCmdDecodeVideoKHR-StdVideoH264PictureParameterSet-07155", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264PictureParameterSet entry with seq_parameter_set_id and pic_parameter_set_id matching StdVideoDecodeH264PictureInfo::seq_parameter_set_id and StdVideoDecodeH264PictureInfo::pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, - {"VUID-vkCmdDecodeVideoKHR-StdVideoH264SequenceParameterSet-07154", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264SequenceParameterSet entry with seq_parameter_set_id matching StdVideoDecodeH264PictureInfo::seq_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, - {"VUID-vkCmdDecodeVideoKHR-StdVideoH265PictureParameterSet-07162", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265PictureParameterSet entry with sps_video_parameter_set_id, pps_seq_parameter_set_id, and pps_pic_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id, StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, and StdVideoDecodeH265PictureInfo::pps_pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, - {"VUID-vkCmdDecodeVideoKHR-StdVideoH265SequenceParameterSet-07161", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265SequenceParameterSet entry with sps_video_parameter_set_id and sps_seq_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id and StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, - {"VUID-vkCmdDecodeVideoKHR-StdVideoH265VideoParameterSet-07160", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265VideoParameterSet entry with vps_video_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-None-10400", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then there must be a bound video session parameters object if any of the following conditions are not met: the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR the pNext chain of pDecodeInfo includes a VkVideoDecodeH264InlineSessionParametersInfoKHR structure the pStdSPS member of the VkVideoDecodeH264InlineSessionParametersInfoKHR structure included in the pNext chain of pDecodeInfo is not NULL the pStdPPS member of the VkVideoDecodeH264InlineSessionParametersInfoKHR structure included in the pNext chain of pDecodeInfo is not NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-None-10403", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then there must be a bound video session parameters object if any of the following conditions are not met: the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure the pStdVPS member of the VkVideoDecodeH265InlineSessionParametersInfoKHR structure included in the pNext chain of pDecodeInfo is not NULL the pStdSPS member of the VkVideoDecodeH265InlineSessionParametersInfoKHR structure included in the pNext chain of pDecodeInfo is not NULL the pStdPPS member of the VkVideoDecodeH265InlineSessionParametersInfoKHR structure included in the pNext chain of pDecodeInfo is not NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-None-10407", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then there must be a bound video session parameters object if any of the following conditions are not met: the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR the pNext chain of pDecodeInfo includes a VkVideoDecodeAV1InlineSessionParametersInfoKHR structure the pStdSequenceHeader member of the VkVideoDecodeAV1InlineSessionParametersInfoKHR structure included in the pNext chain of pDecodeInfo is not NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-StdVideoH264PictureParameterSet-07155", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264PictureParameterSet entry with seq_parameter_set_id and pic_parameter_set_id matching StdVideoDecodeH264PictureInfo::seq_parameter_set_id and StdVideoDecodeH264PictureInfo::pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo , unless the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR and the pNext chain of pDecodeInfo includes a VkVideoDecodeH264InlineSessionParametersInfoKHR structure, and its pStdPPS member is not equal to NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-StdVideoH264SequenceParameterSet-07154", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264SequenceParameterSet entry with seq_parameter_set_id matching StdVideoDecodeH264PictureInfo::seq_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo , unless the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR and the pNext chain of pDecodeInfo includes a VkVideoDecodeH264InlineSessionParametersInfoKHR structure, and its pStdSPS member is not equal to NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-StdVideoH265PictureParameterSet-07162", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265PictureParameterSet entry with sps_video_parameter_set_id, pps_seq_parameter_set_id, and pps_pic_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id, StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, and StdVideoDecodeH265PictureInfo::pps_pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo , unless the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR and the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure, and its pStdPPS member is not equal to NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-StdVideoH265SequenceParameterSet-07161", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265SequenceParameterSet entry with sps_video_parameter_set_id and sps_seq_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id and StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo , unless the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR and the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure, and its pStdSPS member is not equal to NULL", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-StdVideoH265VideoParameterSet-07160", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265VideoParameterSet entry with vps_video_parameter_set_id matching StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo , unless the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR and the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure, and its pStdVPS member is not equal to NULL", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-activeReferencePictureCount-07150", "activeReferencePictureCount must be less than or equal to the VkVideoSessionCreateInfoKHR::maxActiveReferencePictures specified when the bound video session was created", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-bufferlevel", "commandBuffer must be a primary VkCommandBuffer", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-codedOffset-07257", "The codedOffset member of the VkVideoPictureResourceInfoKHR structure pointed to by the pPictureResource member of each element of pDecodeInfo->pReferenceSlots must be an integer multiple of codedOffsetGranularity", "chapters/videocoding.html"}, @@ -9179,6 +9212,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDecodeVideoKHR-pNext-08366", "If the bound video session was created with VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoInlineQueryInfoKHR structure with its queryPool member specifying a valid VkQueryPool handle, then all the queries used by the command, as specified by the VkVideoInlineQueryInfoKHR structure, must be unavailable", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pNext-09250", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the pNext chain of pDecodeInfo must include a VkVideoDecodeAV1PictureInfoKHR structure", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pNext-09255", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the pNext chain of each element of pDecodeInfo->pReferenceSlots must include a VkVideoDecodeAV1DpbSlotInfoKHR structure", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-pNext-10401", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoDecodeH264InlineSessionParametersInfoKHR structure with a non-NULL pStdSPS member, then pStdSPS->seq_parameter_set_id must equal StdVideoDecodeH264PictureInfo::seq_parameter_set_id provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-pNext-10402", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR and with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoDecodeH264InlineSessionParametersInfoKHR structure with a non-NULL pStdPPS member, then pStdPPS->seq_parameter_set_id and pStdPPS->pic_parameter_set_id must equal StdVideoDecodeH264PictureInfo::seq_parameter_set_id and StdVideoDecodeH264PictureInfo::pic_parameter_set_id, respectively, provided in the pStdPictureInfo member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-pNext-10404", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure with a non-NULL pStdVPS member, then pStdVPS->vps_video_parameter_set_id must equal StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-pNext-10405", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure with a non-NULL pStdSPS member, then pStdSPS->sps_video_parameter_set_id and pStdSPS->sps_seq_parameter_set_id must equal StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id and StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, respectively, provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-pNext-10406", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR and with VK_VIDEO_SESSION_CREATE_INLINE_SESSION_PARAMETERS_BIT_KHR, and the pNext chain of pDecodeInfo includes a VkVideoDecodeH265InlineSessionParametersInfoKHR structure with a non-NULL pStdPPS member, then pStdPPS->sps_video_parameter_set_id, pStdPPS->pps_seq_parameter_set_id, and pStdPPS->pps_pic_parameter_set_id must equal StdVideoDecodeH265PictureInfo::sps_video_parameter_set_id, StdVideoDecodeH265PictureInfo::pps_seq_parameter_set_id, and StdVideoDecodeH265PictureInfo::pps_pic_parameter_set_id, respectively, provided in the pStdPictureInfo member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pPictureResource-07255", "The image subresource referred to by the pPictureResource member of each element of pDecodeInfo->pReferenceSlots must be in the VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR layout at the time the video decode operation is executed on the device", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pSliceOffsets-07153", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR, then all elements of the pSliceOffsets member of the VkVideoDecodeH264PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than pDecodeInfo->srcBufferRange", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pSliceSegmentOffsets-07159", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR, then all elements of the pSliceSegmentOffsets member of the VkVideoDecodeH265PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than pDecodeInfo->srcBufferRange", "chapters/videocoding.html"}, @@ -9745,7 +9783,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -9759,7 +9797,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-06887", "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back writeMask are not zero, and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -9770,7 +9808,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -9862,8 +9900,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -10087,7 +10123,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10389,7 +10425,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10673,7 +10709,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10688,7 +10724,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07312", "If the maintenance6 feature is not enabled, a valid index buffer must be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10699,7 +10735,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10791,8 +10827,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -10998,7 +11032,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11013,7 +11047,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07312", "If the maintenance6 feature is not enabled, a valid index buffer must be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11024,7 +11058,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11116,8 +11150,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -11329,7 +11361,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-04008", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-04445", "If the drawIndirectCount feature is not enabled this function must not be used", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11344,7 +11376,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07312", "If the maintenance6 feature is not enabled, a valid index buffer must be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11355,7 +11387,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11447,8 +11479,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -11662,7 +11692,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11676,7 +11706,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-06887", "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back writeMask are not zero, and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11687,7 +11717,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11779,8 +11809,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -11991,7 +12019,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12005,7 +12033,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-06887", "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back writeMask are not zero, and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12016,7 +12044,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12108,8 +12136,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -12323,7 +12349,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-04008", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-04445", "If the drawIndirectCount feature is not enabled this function must not be used", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12337,7 +12363,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-06887", "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back writeMask are not zero, and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12348,7 +12374,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12440,8 +12466,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -12674,7 +12698,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12981,7 +13005,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13294,7 +13318,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13606,7 +13630,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13915,7 +13939,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14224,7 +14248,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14504,7 +14528,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14519,7 +14543,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-06887", "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back writeMask are not zero, and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14530,7 +14554,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14622,8 +14646,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -14831,7 +14853,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-02721", "If the robustBufferAccess feature is not enabled, and that pipeline was created without enabling VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS for vertexInputs, then 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", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-04007", "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", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-04008", "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", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14847,7 +14869,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-07288", "Any shader invocation executed by this command must terminate", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07312", "If the maintenance6 feature is not enabled, a valid index buffer must be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14858,7 +14880,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14950,8 +14972,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/drawing.html"}, @@ -15153,7 +15173,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-viewportCount-09421", "If the VK_NV_viewport_swizzle extension is enabled, and a shader object is bound to any graphics stage, 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", "chapters/drawing.html"}, {"VUID-vkCmdEncodeVideoKHR-None-07012", "The bound video session must not be in uninitialized state at the time the command is executed on the device", "chapters/videocoding.html"}, {"VUID-vkCmdEncodeVideoKHR-None-08250", "The bound video session must have been created with an encode operation", "chapters/videocoding.html"}, - {"VUID-vkCmdEncodeVideoKHR-None-08318", "The bound video session parameters object must have been created with the currently set video encode quality level for the bound video session at the time the command is executed on the device", "chapters/videocoding.html"}, + {"VUID-vkCmdEncodeVideoKHR-None-08318", "If there is a bound video session parameters object, then it must have been created with the currently set video encode quality level for the bound video session at the time the command is executed on the device", "chapters/videocoding.html"}, {"VUID-vkCmdEncodeVideoKHR-StdVideoH264PictureParameterSet-08227", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264PictureParameterSet entry with seq_parameter_set_id and pic_parameter_set_id matching StdVideoEncodeH264PictureInfo::seq_parameter_set_id and StdVideoEncodeH264PictureInfo::pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoEncodeH264PictureInfoKHR structure included in the pNext chain of pEncodeInfo", "chapters/videocoding.html"}, {"VUID-vkCmdEncodeVideoKHR-StdVideoH264SequenceParameterSet-08226", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR, then the bound video session parameters object must contain a StdVideoH264SequenceParameterSet entry with seq_parameter_set_id matching StdVideoEncodeH264PictureInfo::seq_parameter_set_id that is provided in the pStdPictureInfo member of the VkVideoEncodeH264PictureInfoKHR structure included in the pNext chain of pEncodeInfo", "chapters/videocoding.html"}, {"VUID-vkCmdEncodeVideoKHR-StdVideoH265PictureParameterSet-08233", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR, then the bound video session parameters object must contain a StdVideoH265PictureParameterSet entry with sps_video_parameter_set_id, pps_seq_parameter_set_id, and pps_pic_parameter_set_id matching StdVideoEncodeH265PictureInfo::sps_video_parameter_set_id, StdVideoEncodeH265PictureInfo::pps_seq_parameter_set_id, and StdVideoEncodeH265PictureInfo::pps_pic_parameter_set_id, respectively, that are provided in the pStdPictureInfo member of the VkVideoEncodeH265PictureInfoKHR structure included in the pNext chain of pEncodeInfo", "chapters/videocoding.html"}, @@ -15453,7 +15473,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15540,8 +15560,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15755,7 +15773,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-02910", "Transform feedback must not be active", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04007", "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", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04008", "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", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04875", "If there is a shader object bound to the VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage or the bound graphics pipeline state was created with both a VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT stage and the VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT dynamic state enabled, and the current value of primitiveTopology is VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, then vkCmdSetPatchControlPointsEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04876", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE dynamic state enabled, then vkCmdSetRasterizerDiscardEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04877", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthBiasEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-04879", "If there is a shader object bound to the VK_SHADER_STAGE_VERTEX_BIT stage or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE dynamic state enabled then vkCmdSetPrimitiveRestartEnable must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15769,7 +15787,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-06887", "If the current render pass instance uses a depth/stencil attachment with a read-only layout for the stencil aspect, both front and back writeMask are not zero, and stencil test is enabled, all stencil ops must be VK_STENCIL_OP_KEEP", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07288", "Any shader invocation executed by this command must terminate", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07469", "Input attachment views accessed in a subpass must be created with the same VkFormat as the corresponding subpass definition, and be created with a VkImageView that is compatible with the attachment referenced by the subpass' pInputAttachments[InputAttachmentIndex] in the bound VkFramebuffer as specified by Fragment Input Attachment Compatibility", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07619", "If a shader object is bound to the VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT stage and the VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT dynamic state enabled, then vkCmdSetTessellationDomainOriginEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07620", "If the depthClamp feature is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetDepthClampEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07621", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_POLYGON_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetPolygonModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07622", "If a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetRasterizationSamplesEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15780,7 +15798,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07627", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07628", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07629", "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 and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07630", "If the geometryStreams feature is enabled, and a shader object is bound to the VK_SHADER_STAGE_GEOMETRY_BIT stage or a graphics pipeline is bound which was created with both a VK_SHADER_STAGE_GEOMETRY_BIT stage and the VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT dynamic state enabled, then vkCmdSetRasterizationStreamEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07631", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetConservativeRasterizationModeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07632", "If the VK_EXT_conservative_rasterization extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT dynamic state enabled, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of conservativeRasterizationMode is VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, then vkCmdSetExtraPrimitiveOverestimationSizeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07633", "If the depthClipEnable feature is enabled, and a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT dynamic state, then vkCmdSetDepthClipEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15872,8 +15890,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08689", "If there is no bound graphics pipeline, and the taskShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_TASK_BIT_EXT", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08690", "If there is no bound graphics pipeline, and the meshShader feature is enabled, vkCmdBindShadersEXT must have been called in the current command buffer with pStages with an element of VK_SHADER_STAGE_MESH_BIT_EXT", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08693", "If there is no bound graphics pipeline, and at least one of the taskShader and meshShader features is enabled, one of the VK_SHADER_STAGE_VERTEX_BIT or VK_SHADER_STAGE_MESH_BIT_EXT stages must have a valid VkShaderEXT bound, and the other must have no VkShaderEXT bound", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08694", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created without the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, a valid VkShaderEXT must be bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08695", "If there is no bound graphics pipeline, and both the taskShader and meshShader features are enabled, and a valid VkShaderEXT is bound the to the VK_SHADER_STAGE_MESH_BIT_EXT stage, and that VkShaderEXT was created with the VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT flag, there must be no VkShaderEXT bound to the VK_SHADER_STAGE_TASK_BIT_EXT stage", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08696", "If there is no bound graphics pipeline, and a valid VkShaderEXT is bound to the VK_SHADER_STAGE_VERTEX_BIT stage, there must be no VkShaderEXT bound to either the VK_SHADER_STAGE_TASK_BIT_EXT stage or the VK_SHADER_STAGE_MESH_BIT_EXT stage", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08698", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, then all shaders created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag in the same vkCreateShadersEXT call must also be bound", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-08699", "If any graphics shader is bound which was created with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag, any stages in between stages whose shaders which did not create a shader with the VK_SHADER_CREATE_LINK_STAGE_BIT_EXT flag as part of the same vkCreateShadersEXT call must not have any VkShaderEXT bound", "chapters/device_generated_commands/generatedcommands.html"}, @@ -18870,7 +18886,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetImageSubresourceLayout-format-04462", "If format of the image has a depth component, the aspectMask member of pSubresource must contain VK_IMAGE_ASPECT_DEPTH_BIT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-format-04463", "If format of the image has a stencil component, the aspectMask member of pSubresource must contain VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-format-04464", "If format of the image 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", "chapters/resources.html"}, - {"VUID-vkGetImageSubresourceLayout-format-08886", "If format of the image is a color format that is not a multi-planar image format, and tiling of the image is VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_OPTIMAL, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_COLOR_BIT", "chapters/resources.html"}, + {"VUID-vkGetImageSubresourceLayout-format-08886", "If format of the image is a color format that is not a multi-planar format, and tiling of the image is VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_OPTIMAL, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_COLOR_BIT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-image-07790", "image must have been created with tiling equal to VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-image-09432", "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", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-image-parameter", "image must be a valid VkImage handle", "chapters/resources.html"}, @@ -18878,7 +18894,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetImageSubresourceLayout-mipLevel-01716", "The mipLevel member of pSubresource must be less than the mipLevels specified in image", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-pLayout-parameter", "pLayout must be a valid pointer to a VkSubresourceLayout structure", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-pSubresource-parameter", "pSubresource must be a valid pointer to a valid VkImageSubresource structure", "chapters/resources.html"}, - {"VUID-vkGetImageSubresourceLayout-tiling-08717", "If the tiling of the image is VK_IMAGE_TILING_LINEAR and has a multi-planar image format, then the aspectMask member of pSubresource must be a single valid multi-planar aspect mask bit", "chapters/resources.html"}, + {"VUID-vkGetImageSubresourceLayout-tiling-08717", "If the tiling of the image is VK_IMAGE_TILING_LINEAR and has a multi-planar format, then the aspectMask member of pSubresource must be a single valid multi-planar aspect mask bit", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout-tiling-09433", "If the tiling of the image is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT and the index i must be less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount associated with the image's format and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-arrayLayer-01717", "The arrayLayer member of pSubresource must be less than the arrayLayers specified in image", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-aspectMask-00997", "The aspectMask member of pSubresource must only have a single bit set", "chapters/resources.html"}, @@ -18886,14 +18902,14 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetImageSubresourceLayout2-format-04462", "If format of the image has a depth component, the aspectMask member of pSubresource must contain VK_IMAGE_ASPECT_DEPTH_BIT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-format-04463", "If format of the image has a stencil component, the aspectMask member of pSubresource must contain VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-format-04464", "If format of the image 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", "chapters/resources.html"}, - {"VUID-vkGetImageSubresourceLayout2-format-08886", "If format of the image is a color format that is not a multi-planar image format, and tiling of the image is VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_OPTIMAL, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_COLOR_BIT", "chapters/resources.html"}, + {"VUID-vkGetImageSubresourceLayout2-format-08886", "If format of the image is a color format that is not a multi-planar format, and tiling of the image is VK_IMAGE_TILING_LINEAR or VK_IMAGE_TILING_OPTIMAL, the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_COLOR_BIT", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-image-09434", "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", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-image-parameter", "image must be a valid VkImage handle", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-image-parent", "image must have been created, allocated, or retrieved from device", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-mipLevel-01716", "The mipLevel member of pSubresource must be less than the mipLevels specified in image", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-pLayout-parameter", "pLayout must be a valid pointer to a VkSubresourceLayout2 structure", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-pSubresource-parameter", "pSubresource must be a valid pointer to a valid VkImageSubresource2 structure", "chapters/resources.html"}, - {"VUID-vkGetImageSubresourceLayout2-tiling-08717", "If the tiling of the image is VK_IMAGE_TILING_LINEAR and has a multi-planar image format, then the aspectMask member of pSubresource must be a single valid multi-planar aspect mask bit", "chapters/resources.html"}, + {"VUID-vkGetImageSubresourceLayout2-tiling-08717", "If the tiling of the image is VK_IMAGE_TILING_LINEAR and has a multi-planar format, then the aspectMask member of pSubresource must be a single valid multi-planar aspect mask bit", "chapters/resources.html"}, {"VUID-vkGetImageSubresourceLayout2-tiling-09435", "If the tiling of the image is VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, then the aspectMask member of pSubresource must be VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT and the index i must be less than the VkDrmFormatModifierPropertiesEXT::drmFormatModifierPlaneCount associated with the image's format and VkImageDrmFormatModifierPropertiesEXT::drmFormatModifier", "chapters/resources.html"}, {"VUID-vkGetImageViewAddressNVX-device-parameter", "device must be a valid VkDevice handle", "chapters/resources.html"}, {"VUID-vkGetImageViewAddressNVX-imageView-parameter", "imageView must be a valid VkImageView handle", "chapters/resources.html"}, @@ -18934,6 +18950,15 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753", "pHostPointer must be a pointer aligned to an integer multiple of VkPhysicalDeviceExternalMemoryHostPropertiesEXT::minImportedHostPointerAlignment", "chapters/memory.html"}, {"VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-parameter", "pHostPointer must be a pointer value", "chapters/memory.html"}, {"VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter", "pMemoryHostPointerProperties must be a valid pointer to a VkMemoryHostPointerPropertiesEXT structure", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandleEXT-device-parameter", "device must be a valid VkDevice handle", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandleEXT-pGetMetalHandleInfo-parameter", "pGetMetalHandleInfo must be a valid pointer to a valid VkMemoryGetMetalHandleInfoEXT structure", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandleEXT-pHandle-parameter", "pHandle must be a valid pointer to a pointer value", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandlePropertiesEXT-device-parameter", "device must be a valid VkDevice handle", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandlePropertiesEXT-handle-10416", "handle must point to a valid id, id or id", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-10417", "handleType must be VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT or VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandlePropertiesEXT-handleType-parameter", "handleType must be a valid VkExternalMemoryHandleTypeFlagBits value", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandlePropertiesEXT-pHandle-parameter", "pHandle must be a pointer value", "chapters/memory.html"}, + {"VUID-vkGetMemoryMetalHandlePropertiesEXT-pMemoryMetalHandleProperties-parameter", "pMemoryMetalHandleProperties must be a valid pointer to a VkMemoryMetalHandlePropertiesEXT structure", "chapters/memory.html"}, {"VUID-vkGetMemoryRemoteAddressNV-device-parameter", "device must be a valid VkDevice handle", "chapters/memory.html"}, {"VUID-vkGetMemoryRemoteAddressNV-pAddress-parameter", "pAddress must be a valid pointer to a VkRemoteAddressNV value", "chapters/memory.html"}, {"VUID-vkGetMemoryRemoteAddressNV-pMemoryGetRemoteAddressInfo-parameter", "pMemoryGetRemoteAddressInfo must be a valid pointer to a valid VkMemoryGetRemoteAddressInfoNV structure", "chapters/memory.html"}, diff --git a/scripts/generators/dispatch_table_helper_generator.py b/scripts/generators/dispatch_table_helper_generator.py index 9d81ae5e7a6..d030a3a0138 100644 --- a/scripts/generators/dispatch_table_helper_generator.py +++ b/scripts/generators/dispatch_table_helper_generator.py @@ -1,9 +1,9 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2015-2024 The Khronos Group Inc. -# Copyright (c) 2015-2024 Valve Corporation -# Copyright (c) 2015-2024 LunarG, Inc. -# Copyright (c) 2015-2023 Google Inc. +# Copyright (c) 2015-2025 The Khronos Group Inc. +# Copyright (c) 2015-2025 Valve Corporation +# Copyright (c) 2015-2025 LunarG, Inc. +# Copyright (c) 2015-2025 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,10 +32,10 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. - * Copyright (c) 2015-2024 Google Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. + * Copyright (c) 2015-2025 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/generators/function_pointers_generator.py b/scripts/generators/function_pointers_generator.py index 0f0817b8b2a..f49c3127eae 100644 --- a/scripts/generators/function_pointers_generator.py +++ b/scripts/generators/function_pointers_generator.py @@ -1,8 +1,8 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2015-2024 The Khronos Group Inc. -# Copyright (c) 2015-2024 Valve Corporation -# Copyright (c) 2015-2024 LunarG, Inc. +# Copyright (c) 2015-2025 The Khronos Group Inc. +# Copyright (c) 2015-2025 Valve Corporation +# Copyright (c) 2015-2025 LunarG, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,9 +30,9 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/generators/layer_dispatch_table_generator.py b/scripts/generators/layer_dispatch_table_generator.py index 3081f9cfe81..995dfb50d7c 100644 --- a/scripts/generators/layer_dispatch_table_generator.py +++ b/scripts/generators/layer_dispatch_table_generator.py @@ -1,9 +1,9 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2015-2024 The Khronos Group Inc. -# Copyright (c) 2015-2024 Valve Corporation -# Copyright (c) 2015-2024 LunarG, Inc. -# Copyright (c) 2015-2024 Google Inc. +# Copyright (c) 2015-2025 The Khronos Group Inc. +# Copyright (c) 2015-2025 Valve Corporation +# Copyright (c) 2015-2025 LunarG, Inc. +# Copyright (c) 2015-2025 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,10 +32,10 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2015-2024 The Khronos Group Inc. - * Copyright (c) 2015-2024 Valve Corporation - * Copyright (c) 2015-2024 LunarG, Inc. - * Copyright (c) 2015-2024 Google Inc. + * Copyright (c) 2015-2025 The Khronos Group Inc. + * Copyright (c) 2015-2025 Valve Corporation + * Copyright (c) 2015-2025 LunarG, Inc. + * Copyright (c) 2015-2025 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/scripts/known_good.json b/scripts/known_good.json index ac9e89653e1..6165a560e9d 100644 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -7,7 +7,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.4.305" + "commit": "v1.4.306" }, { "name": "Vulkan-Utility-Libraries", @@ -15,7 +15,7 @@ "sub_dir": "Vulkan-Utility-Libraries", "build_dir": "Vulkan-Utility-Libraries/build", "install_dir": "Vulkan-Utility-Libraries/build/install", - "commit": "f07e27717a642fa193c967440f21ed634ea17987", + "commit": "v1.4.306", "deps": [ { "var_name": "VULKAN_HEADERS_INSTALL_DIR", @@ -110,7 +110,7 @@ "sub_dir": "Vulkan-Loader", "build_dir": "Vulkan-Loader/build", "install_dir": "Vulkan-Loader/build/install", - "commit": "v1.4.305", + "commit": "v1.4.306", "build_step": "skip", "optional": [ "tests" @@ -136,7 +136,7 @@ "sub_dir": "Vulkan-Tools", "build_dir": "Vulkan-Tools/build", "install_dir": "Vulkan-Tools/build/install", - "commit": "v1.4.305", + "commit": "v1.4.306", "build_step": "skip", "optional": [ "tests" diff --git a/tests/layers/VkLayer_device_profile_api.json.in b/tests/layers/VkLayer_device_profile_api.json.in index e19c2086ee3..32f9fcc6a7e 100644 --- a/tests/layers/VkLayer_device_profile_api.json.in +++ b/tests/layers/VkLayer_device_profile_api.json.in @@ -4,7 +4,7 @@ "name": "VK_LAYER_LUNARG_device_profile_api", "type": "GLOBAL", "library_path": "@JSON_LIBRARY_PATH@", - "api_version": "1.4.305", + "api_version": "1.4.306", "implementation_version": "2", "description": "LunarG Device Profile Api Layer", "device_extensions": [