From d623e13ebe311469fea28e6b8fc32d9b723db60a Mon Sep 17 00:00:00 2001 From: Mike Schuchardt Date: Fri, 17 Jan 2025 08:44:22 -0800 Subject: [PATCH] build: Update to header 1.4.305 --- layers/VkLayer_khronos_validation.json.in | 2 +- layers/vulkan/generated/best_practices.cpp | 8 +- layers/vulkan/generated/best_practices.h | 6 +- layers/vulkan/generated/device_features.cpp | 28 +- layers/vulkan/generated/device_features.h | 10 +- layers/vulkan/generated/enum_flag_bits.h | 15 +- .../generated/error_location_helper.cpp | 17 +- .../vulkan/generated/error_location_helper.h | 17 +- .../generated/feature_requirements_helper.cpp | 65 +++-- .../generated/feature_requirements_helper.h | 6 +- .../generated/pnext_chain_extraction.cpp | 31 ++- .../vulkan/generated/pnext_chain_extraction.h | 6 +- .../generated/stateless_validation_helper.cpp | 106 ++++++-- layers/vulkan/generated/test_icd_helper.h | 3 + layers/vulkan/generated/thread_safety.cpp | 14 +- .../vulkan/generated/thread_safety_commands.h | 8 +- .../generated/thread_safety_counter_bodies.h | 8 +- .../thread_safety_counter_definitions.h | 8 +- .../thread_safety_counter_instances.h | 8 +- layers/vulkan/generated/valid_flag_values.cpp | 23 +- .../vulkan/generated/vk_extension_helper.cpp | 11 +- layers/vulkan/generated/vk_extension_helper.h | 22 +- .../generated/vk_validation_error_messages.h | 248 ++++++++++-------- scripts/generate_spec_error_message.py | 14 +- .../generators/best_practices_generator.py | 12 +- .../generators/device_features_generator.py | 6 +- .../generators/enum_flag_bits_generator.py | 16 +- .../error_location_helper_generator.py | 8 +- .../generators/extension_helper_generator.py | 18 +- .../pnext_chain_extraction_generator.py | 14 +- scripts/generators/thread_safety_generator.py | 18 +- .../generators/valid_flag_values_generator.py | 12 +- scripts/known_good.json | 8 +- .../layers/VkLayer_device_profile_api.json.in | 2 +- 34 files changed, 503 insertions(+), 295 deletions(-) diff --git a/layers/VkLayer_khronos_validation.json.in b/layers/VkLayer_khronos_validation.json.in index 3689455a9f3..b973157c4f1 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.304", + "api_version": "1.4.305", "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 14c80eba736..01c6ec9b7d0 100644 --- a/layers/vulkan/generated/best_practices.cpp +++ b/layers/vulkan/generated/best_practices.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. @@ -156,6 +156,8 @@ DeprecationData GetDeprecatedData(vvl::Extension extension_name) { {vvl::Extension::_VK_EXT_extended_dynamic_state2, {DeprecationReason::Promoted, {vvl::Version::_VK_VERSION_1_3}}}, {vvl::Extension::_VK_EXT_global_priority_query, {DeprecationReason::Promoted, {vvl::Extension::_VK_KHR_global_priority}}}, {vvl::Extension::_VK_EXT_load_store_op_none, {DeprecationReason::Promoted, {vvl::Extension::_VK_KHR_load_store_op_none}}}, + {vvl::Extension::_VK_EXT_depth_clamp_zero_one, + {DeprecationReason::Promoted, {vvl::Extension::_VK_KHR_depth_clamp_zero_one}}}, {vvl::Extension::_VK_EXT_pipeline_protected_access, {DeprecationReason::Promoted, {vvl::Version::_VK_VERSION_1_4}}}, }; diff --git a/layers/vulkan/generated/best_practices.h b/layers/vulkan/generated/best_practices.h index 11c2af1890b..32b3844b104 100644 --- a/layers/vulkan/generated/best_practices.h +++ b/layers/vulkan/generated/best_practices.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. diff --git a/layers/vulkan/generated/device_features.cpp b/layers/vulkan/generated/device_features.cpp index 9c365a38b48..5e936b043ed 100644 --- a/layers/vulkan/generated/device_features.cpp +++ b/layers/vulkan/generated/device_features.cpp @@ -3,8 +3,8 @@ /*************************************************************************** * - * Copyright (c) 2023-2024 Google Inc. - * Copyright (c) 2023-2024 LunarG, Inc. + * Copyright (c) 2023-2025 Google Inc. + * Copyright (c) 2023-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. @@ -720,6 +720,18 @@ void GetEnabledDeviceFeatures(const VkDeviceCreateInfo *pCreateInfo, DeviceFeatu features->maintenance7 |= enabled->maintenance7 == VK_TRUE; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR: { + const VkPhysicalDeviceMaintenance8FeaturesKHR *enabled = + reinterpret_cast(pNext); + features->maintenance8 |= enabled->maintenance8 == VK_TRUE; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR: { + const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR *enabled = + reinterpret_cast(pNext); + features->depthClampZeroOne |= enabled->depthClampZeroOne == VK_TRUE; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { const VkPhysicalDeviceTransformFeedbackFeaturesEXT *enabled = reinterpret_cast(pNext); @@ -1287,12 +1299,6 @@ void GetEnabledDeviceFeatures(const VkDeviceCreateInfo *pCreateInfo, DeviceFeatu features->descriptorSetHostMapping |= enabled->descriptorSetHostMapping == VK_TRUE; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: { - const VkPhysicalDeviceDepthClampZeroOneFeaturesEXT *enabled = - reinterpret_cast(pNext); - features->depthClampZeroOne |= enabled->depthClampZeroOne == VK_TRUE; - break; - } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *enabled = reinterpret_cast(pNext); @@ -1634,6 +1640,12 @@ void GetEnabledDeviceFeatures(const VkDeviceCreateInfo *pCreateInfo, DeviceFeatu features->cooperativeMatrixBlockLoads |= enabled->cooperativeMatrixBlockLoads == VK_TRUE; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM: { + const VkPhysicalDevicePipelineOpacityMicromapFeaturesARM *enabled = + reinterpret_cast(pNext); + features->pipelineOpacityMicromap |= enabled->pipelineOpacityMicromap == VK_TRUE; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: { const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT *enabled = reinterpret_cast(pNext); diff --git a/layers/vulkan/generated/device_features.h b/layers/vulkan/generated/device_features.h index 111478d915b..22249efb175 100644 --- a/layers/vulkan/generated/device_features.h +++ b/layers/vulkan/generated/device_features.h @@ -3,8 +3,8 @@ /*************************************************************************** * - * Copyright (c) 2023-2024 Google Inc. - * Copyright (c) 2023-2024 LunarG, Inc. + * Copyright (c) 2023-2025 Google Inc. + * Copyright (c) 2023-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. @@ -152,7 +152,7 @@ struct DeviceFeatures { bool leastRepresentableValueForceUnormRepresentation; // VkPhysicalDeviceDepthClampControlFeaturesEXT bool depthClampControl; - // VkPhysicalDeviceDepthClampZeroOneFeaturesEXT + // VkPhysicalDeviceDepthClampZeroOneFeaturesKHR bool depthClampZeroOne; // VkPhysicalDeviceDepthClipControlFeaturesEXT bool depthClipControl; @@ -532,6 +532,8 @@ struct DeviceFeatures { bool maintenance6; // VkPhysicalDeviceMaintenance7FeaturesKHR bool maintenance7; + // VkPhysicalDeviceMaintenance8FeaturesKHR + bool maintenance8; // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT bool memoryMapPlaced; // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT @@ -602,6 +604,8 @@ struct DeviceFeatures { bool pipelineExecutableInfo; // VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT bool pipelineLibraryGroupHandles; + // VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + bool pipelineOpacityMicromap; // VkPhysicalDevicePipelinePropertiesFeaturesEXT bool pipelinePropertiesIdentifier; // VkPhysicalDevicePipelineProtectedAccessFeatures, VkPhysicalDeviceVulkan14Features diff --git a/layers/vulkan/generated/enum_flag_bits.h b/layers/vulkan/generated/enum_flag_bits.h index b604aa49eb4..8cd72d5d1a8 100644 --- a/layers/vulkan/generated/enum_flag_bits.h +++ b/layers/vulkan/generated/enum_flag_bits.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. @@ -24,7 +24,7 @@ #include #include "vulkan/vulkan.h" // clang-format off -const uint32_t GeneratedVulkanHeaderVersion = 304; +const uint32_t GeneratedVulkanHeaderVersion = 305; 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; @@ -40,7 +40,7 @@ const VkImageCreateFlags AllVkImageCreateFlagBits = VK_IMAGE_CREATE_SPARSE_BINDI const VkSampleCountFlags AllVkSampleCountFlagBits = VK_SAMPLE_COUNT_1_BIT|VK_SAMPLE_COUNT_2_BIT|VK_SAMPLE_COUNT_4_BIT|VK_SAMPLE_COUNT_8_BIT|VK_SAMPLE_COUNT_16_BIT|VK_SAMPLE_COUNT_32_BIT|VK_SAMPLE_COUNT_64_BIT; const VkImageUsageFlags AllVkImageUsageFlagBits = VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_TRANSFER_DST_BIT|VK_IMAGE_USAGE_SAMPLED_BIT|VK_IMAGE_USAGE_STORAGE_BIT|VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT|VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT|VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT|VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT|VK_IMAGE_USAGE_HOST_TRANSFER_BIT|VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR|VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR|VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR|VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT|VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR|VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR|VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR|VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI|VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM|VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM|VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR|VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR; const VkImageViewCreateFlags AllVkImageViewCreateFlagBits = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT|VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT|VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT; -const VkPipelineCacheCreateFlags AllVkPipelineCacheCreateFlagBits = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT; +const VkPipelineCacheCreateFlags AllVkPipelineCacheCreateFlagBits = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT|VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR; const VkPipelineShaderStageCreateFlags AllVkPipelineShaderStageCreateFlagBits = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT|VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT; const VkPipelineCreateFlags AllVkPipelineCreateFlagBits = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT|VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT|VK_PIPELINE_CREATE_DERIVATIVE_BIT|VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT|VK_PIPELINE_CREATE_DISPATCH_BASE_BIT|VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT|VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT|VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT|VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT|VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR|VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR|VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR|VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV|VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT|VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR|VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR|VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV|VK_PIPELINE_CREATE_LIBRARY_BIT_KHR|VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT|VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT|VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT|VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV|VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT|VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV; const VkCullModeFlags AllVkCullModeFlagBits = VK_CULL_MODE_NONE|VK_CULL_MODE_FRONT_BIT|VK_CULL_MODE_BACK_BIT|VK_CULL_MODE_FRONT_AND_BACK; @@ -54,7 +54,7 @@ const VkDescriptorSetLayoutCreateFlags AllVkDescriptorSetLayoutCreateFlagBits = const VkAttachmentDescriptionFlags AllVkAttachmentDescriptionFlagBits = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT; const VkFramebufferCreateFlags AllVkFramebufferCreateFlagBits = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT; const VkSubpassDescriptionFlags AllVkSubpassDescriptionFlagBits = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX|VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX|VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM|VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM|VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT|VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT|VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT|VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT; -const VkDependencyFlags AllVkDependencyFlagBits = VK_DEPENDENCY_BY_REGION_BIT|VK_DEPENDENCY_DEVICE_GROUP_BIT|VK_DEPENDENCY_VIEW_LOCAL_BIT|VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT; +const VkDependencyFlags AllVkDependencyFlagBits = VK_DEPENDENCY_BY_REGION_BIT|VK_DEPENDENCY_DEVICE_GROUP_BIT|VK_DEPENDENCY_VIEW_LOCAL_BIT|VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT|VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR; const VkRenderPassCreateFlags AllVkRenderPassCreateFlagBits = VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM; const VkCommandPoolCreateFlags AllVkCommandPoolCreateFlagBits = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT|VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT|VK_COMMAND_POOL_CREATE_PROTECTED_BIT; const VkQueryControlFlags AllVkQueryControlFlagBits = VK_QUERY_CONTROL_PRECISE_BIT; @@ -72,7 +72,7 @@ const VkSubmitFlags AllVkSubmitFlagBits = VK_SUBMIT_PROTECTED_BIT; const VkRenderingFlags AllVkRenderingFlagBits = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT|VK_RENDERING_SUSPENDING_BIT|VK_RENDERING_RESUMING_BIT|VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT|VK_RENDERING_CONTENTS_INLINE_BIT_KHR; const VkMemoryMapFlags AllVkMemoryMapFlagBits = VK_MEMORY_MAP_PLACED_BIT_EXT; const VkMemoryUnmapFlags AllVkMemoryUnmapFlagBits = VK_MEMORY_UNMAP_RESERVE_BIT_EXT; -const VkPipelineCreateFlags2 AllVkPipelineCreateFlagBits2 = VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT|VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT|VK_PIPELINE_CREATE_2_DERIVATIVE_BIT|VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT|VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT|VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT|VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT|VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT|VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT|VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX|VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT|VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV|VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR|VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR|VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT|VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT|VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR|VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV|VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV|VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT|VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT|VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV|VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT|VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR|VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT; +const VkPipelineCreateFlags2 AllVkPipelineCreateFlagBits2 = VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT|VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT|VK_PIPELINE_CREATE_2_DERIVATIVE_BIT|VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT|VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT|VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT|VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT|VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT|VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT|VK_PIPELINE_CREATE_2_EXECUTION_GRAPH_BIT_AMDX|VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT|VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV|VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR|VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR|VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT|VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT|VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR|VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR|VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV|VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV|VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR|VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT|VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT|VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT|VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV|VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT|VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM|VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR|VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_EXT; const VkBufferUsageFlags2 AllVkBufferUsageFlagBits2 = VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT|VK_BUFFER_USAGE_2_TRANSFER_DST_BIT|VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT|VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT|VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT|VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT|VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT|VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT|VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT|VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT|VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX|VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT|VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR|VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT|VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT|VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR|VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR|VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR|VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR|VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR|VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR|VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT|VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT|VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT|VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT|VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT|VK_BUFFER_USAGE_2_PREPROCESS_BUFFER_BIT_EXT; const VkHostImageCopyFlags AllVkHostImageCopyFlagBits = VK_HOST_IMAGE_COPY_MEMCPY; const VkSwapchainCreateFlagsKHR AllVkSwapchainCreateFlagBitsKHR = VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR|VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR|VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR|VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT; @@ -98,6 +98,7 @@ const VkVideoEncodeUsageFlagsKHR AllVkVideoEncodeUsageFlagBitsKHR = VK_VIDEO_ENC const VkVideoEncodeContentFlagsKHR AllVkVideoEncodeContentFlagBitsKHR = VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR|VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR|VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR|VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR; const VkVideoEncodeRateControlModeFlagsKHR AllVkVideoEncodeRateControlModeFlagBitsKHR = VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR|VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR|VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR|VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR; const VkVideoEncodeAV1RateControlFlagsKHR AllVkVideoEncodeAV1RateControlFlagBitsKHR = VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REGULAR_GOP_BIT_KHR|VK_VIDEO_ENCODE_AV1_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR|VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR|VK_VIDEO_ENCODE_AV1_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR; +const VkAccessFlags3KHR AllVkAccessFlagBits3KHR = VK_ACCESS_3_NONE_KHR; const VkDebugReportFlagsEXT AllVkDebugReportFlagBitsEXT = VK_DEBUG_REPORT_INFORMATION_BIT_EXT|VK_DEBUG_REPORT_WARNING_BIT_EXT|VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT|VK_DEBUG_REPORT_ERROR_BIT_EXT|VK_DEBUG_REPORT_DEBUG_BIT_EXT; const VkExternalMemoryHandleTypeFlagsNV AllVkExternalMemoryHandleTypeFlagBitsNV = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV|VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV; const VkConditionalRenderingFlagsEXT AllVkConditionalRenderingFlagBitsEXT = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT; diff --git a/layers/vulkan/generated/error_location_helper.cpp b/layers/vulkan/generated/error_location_helper.cpp index fa1563a036b..b313da1346a 100644 --- a/layers/vulkan/generated/error_location_helper.cpp +++ b/layers/vulkan/generated/error_location_helper.cpp @@ -3,8 +3,8 @@ /*************************************************************************** * - * Copyright (c) 2023-2024 The Khronos Group Inc. - * Copyright (c) 2023-2024 Valve Corporation + * Copyright (c) 2023-2025 The Khronos Group Inc. + * Copyright (c) 2023-2025 Valve Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1160,6 +1160,7 @@ const char* String(Struct structure) { {"VkMemoryAllocateInfo", 21}, {"VkMemoryBarrier", 16}, {"VkMemoryBarrier2", 17}, + {"VkMemoryBarrierAccessFlags3KHR", 31}, {"VkMemoryDedicatedAllocateInfo", 30}, {"VkMemoryDedicatedRequirements", 30}, {"VkMemoryFdPropertiesKHR", 24}, @@ -1261,7 +1262,7 @@ const char* String(Struct structure) { {"VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV", 59}, {"VkPhysicalDeviceDepthBiasControlFeaturesEXT", 44}, {"VkPhysicalDeviceDepthClampControlFeaturesEXT", 45}, - {"VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", 45}, + {"VkPhysicalDeviceDepthClampZeroOneFeaturesKHR", 45}, {"VkPhysicalDeviceDepthClipControlFeaturesEXT", 44}, {"VkPhysicalDeviceDepthClipEnableFeaturesEXT", 43}, {"VkPhysicalDeviceDepthStencilResolveProperties", 46}, @@ -1372,6 +1373,7 @@ const char* String(Struct structure) { {"VkPhysicalDeviceMaintenance6Properties", 39}, {"VkPhysicalDeviceMaintenance7FeaturesKHR", 40}, {"VkPhysicalDeviceMaintenance7PropertiesKHR", 42}, + {"VkPhysicalDeviceMaintenance8FeaturesKHR", 40}, {"VkPhysicalDeviceMapMemoryPlacedFeaturesEXT", 43}, {"VkPhysicalDeviceMapMemoryPlacedPropertiesEXT", 45}, {"VkPhysicalDeviceMemoryBudgetPropertiesEXT", 42}, @@ -1410,6 +1412,7 @@ const char* String(Struct structure) { {"VkPhysicalDevicePipelineCreationCacheControlFeatures", 53}, {"VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR", 56}, {"VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT", 55}, + {"VkPhysicalDevicePipelineOpacityMicromapFeaturesARM", 51}, {"VkPhysicalDevicePipelinePropertiesFeaturesEXT", 46}, {"VkPhysicalDevicePipelineProtectedAccessFeatures", 48}, {"VkPhysicalDevicePipelineRobustnessFeatures", 43}, @@ -2327,6 +2330,7 @@ const char* String(Field field) { {"dst", 4}, {"dstAccelerationStructure", 25}, {"dstAccessMask", 14}, + {"dstAccessMask3", 15}, {"dstAddress", 11}, {"dstAlphaBlendFactor", 20}, {"dstArrayElement", 16}, @@ -2792,6 +2796,7 @@ const char* String(Field field) { {"maintenance5", 13}, {"maintenance6", 13}, {"maintenance7", 13}, + {"maintenance8", 13}, {"major", 6}, {"mapEntryCount", 14}, {"marker", 7}, @@ -3846,6 +3851,7 @@ const char* String(Field field) { {"pipelineIdentifier", 19}, {"pipelineLayout", 15}, {"pipelineLibraryGroupHandles", 28}, + {"pipelineOpacityMicromap", 24}, {"pipelinePropertiesIdentifier", 29}, {"pipelineProtectedAccess", 24}, {"pipelineRobustness", 19}, @@ -4344,6 +4350,7 @@ const char* String(Field field) { {"src", 4}, {"srcAccelerationStructure", 25}, {"srcAccessMask", 14}, + {"srcAccessMask3", 15}, {"srcAddress", 11}, {"srcAlphaBlendFactor", 20}, {"srcArrayElement", 16}, @@ -4836,6 +4843,7 @@ const char* String(FlagBitmask value) { {"VkAccelerationStructureCreateFlagBitsKHR", 41}, {"VkAccessFlagBits", 17}, {"VkAccessFlagBits2", 18}, + {"VkAccessFlagBits3KHR", 21}, {"VkAcquireProfilingLockFlagBitsKHR", 34}, {"VkAttachmentDescriptionFlagBits", 32}, {"VkBufferCreateFlagBits", 23}, @@ -5007,6 +5015,7 @@ const char* String(Extension extension) { {"VK_AMD_texture_gather_bias_lod", 31}, {"VK_ANDROID_external_format_resolve", 35}, {"VK_ANDROID_external_memory_android_hardware_buffer", 51}, + {"VK_ARM_pipeline_opacity_micromap", 33}, {"VK_ARM_rasterization_order_attachment_access", 45}, {"VK_ARM_render_pass_striped", 27}, {"VK_ARM_scheduling_controls", 27}, @@ -5177,6 +5186,7 @@ const char* String(Extension extension) { {"VK_KHR_create_renderpass2", 26}, {"VK_KHR_dedicated_allocation", 28}, {"VK_KHR_deferred_host_operations", 32}, + {"VK_KHR_depth_clamp_zero_one", 28}, {"VK_KHR_depth_stencil_resolve", 29}, {"VK_KHR_descriptor_update_template", 34}, {"VK_KHR_device_group", 20}, @@ -5220,6 +5230,7 @@ const char* String(Extension extension) { {"VK_KHR_maintenance5", 20}, {"VK_KHR_maintenance6", 20}, {"VK_KHR_maintenance7", 20}, + {"VK_KHR_maintenance8", 20}, {"VK_KHR_map_memory2", 19}, {"VK_KHR_multiview", 17}, {"VK_KHR_performance_query", 25}, diff --git a/layers/vulkan/generated/error_location_helper.h b/layers/vulkan/generated/error_location_helper.h index dceb7667d1c..3e2d5354659 100644 --- a/layers/vulkan/generated/error_location_helper.h +++ b/layers/vulkan/generated/error_location_helper.h @@ -3,8 +3,8 @@ /*************************************************************************** * - * Copyright (c) 2023-2024 The Khronos Group Inc. - * Copyright (c) 2023-2024 Valve Corporation + * Copyright (c) 2023-2025 The Khronos Group Inc. + * Copyright (c) 2023-2025 Valve Corporation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1154,6 +1154,7 @@ enum class Struct { VkMemoryAllocateInfo, VkMemoryBarrier, VkMemoryBarrier2, + VkMemoryBarrierAccessFlags3KHR, VkMemoryDedicatedAllocateInfo, VkMemoryDedicatedRequirements, VkMemoryFdPropertiesKHR, @@ -1255,7 +1256,7 @@ enum class Struct { VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthBiasControlFeaturesEXT, VkPhysicalDeviceDepthClampControlFeaturesEXT, - VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, + VkPhysicalDeviceDepthClampZeroOneFeaturesKHR, VkPhysicalDeviceDepthClipControlFeaturesEXT, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDepthStencilResolveProperties, @@ -1366,6 +1367,7 @@ enum class Struct { VkPhysicalDeviceMaintenance6Properties, VkPhysicalDeviceMaintenance7FeaturesKHR, VkPhysicalDeviceMaintenance7PropertiesKHR, + VkPhysicalDeviceMaintenance8FeaturesKHR, VkPhysicalDeviceMapMemoryPlacedFeaturesEXT, VkPhysicalDeviceMapMemoryPlacedPropertiesEXT, VkPhysicalDeviceMemoryBudgetPropertiesEXT, @@ -1404,6 +1406,7 @@ enum class Struct { VkPhysicalDevicePipelineCreationCacheControlFeatures, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT, + VkPhysicalDevicePipelineOpacityMicromapFeaturesARM, VkPhysicalDevicePipelinePropertiesFeaturesEXT, VkPhysicalDevicePipelineProtectedAccessFeatures, VkPhysicalDevicePipelineRobustnessFeatures, @@ -2318,6 +2321,7 @@ enum class Field { dst, dstAccelerationStructure, dstAccessMask, + dstAccessMask3, dstAddress, dstAlphaBlendFactor, dstArrayElement, @@ -2783,6 +2787,7 @@ enum class Field { maintenance5, maintenance6, maintenance7, + maintenance8, major, mapEntryCount, marker, @@ -3837,6 +3842,7 @@ enum class Field { pipelineIdentifier, pipelineLayout, pipelineLibraryGroupHandles, + pipelineOpacityMicromap, pipelinePropertiesIdentifier, pipelineProtectedAccess, pipelineRobustness, @@ -4335,6 +4341,7 @@ enum class Field { src, srcAccelerationStructure, srcAccessMask, + srcAccessMask3, srcAddress, srcAlphaBlendFactor, srcArrayElement, @@ -4820,6 +4827,7 @@ enum class FlagBitmask { VkAccelerationStructureCreateFlagBitsKHR, VkAccessFlagBits, VkAccessFlagBits2, + VkAccessFlagBits3KHR, VkAcquireProfilingLockFlagBitsKHR, VkAttachmentDescriptionFlagBits, VkBufferCreateFlagBits, @@ -4989,6 +4997,7 @@ enum class Extension { _VK_AMD_texture_gather_bias_lod, _VK_ANDROID_external_format_resolve, _VK_ANDROID_external_memory_android_hardware_buffer, + _VK_ARM_pipeline_opacity_micromap, _VK_ARM_rasterization_order_attachment_access, _VK_ARM_render_pass_striped, _VK_ARM_scheduling_controls, @@ -5159,6 +5168,7 @@ enum class Extension { _VK_KHR_create_renderpass2, _VK_KHR_dedicated_allocation, _VK_KHR_deferred_host_operations, + _VK_KHR_depth_clamp_zero_one, _VK_KHR_depth_stencil_resolve, _VK_KHR_descriptor_update_template, _VK_KHR_device_group, @@ -5202,6 +5212,7 @@ enum class Extension { _VK_KHR_maintenance5, _VK_KHR_maintenance6, _VK_KHR_maintenance7, + _VK_KHR_maintenance8, _VK_KHR_map_memory2, _VK_KHR_multiview, _VK_KHR_performance_query, diff --git a/layers/vulkan/generated/feature_requirements_helper.cpp b/layers/vulkan/generated/feature_requirements_helper.cpp index d39d771d93e..17bf4787102 100644 --- a/layers/vulkan/generated/feature_requirements_helper.cpp +++ b/layers/vulkan/generated/feature_requirements_helper.cpp @@ -1064,10 +1064,10 @@ FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **i } case Feature::depthClampZeroOne: { - auto vk_struct = const_cast( - vku::FindStructInPNextChain(*inout_pnext_chain)); + auto vk_struct = const_cast( + vku::FindStructInPNextChain(*inout_pnext_chain)); if (!vk_struct) { - vk_struct = new VkPhysicalDeviceDepthClampZeroOneFeaturesEXT; + vk_struct = new VkPhysicalDeviceDepthClampZeroOneFeaturesKHR; *vk_struct = vku::InitStructHelper(); if (*inout_pnext_chain) { vvl::PnextChainAdd(*inout_pnext_chain, vk_struct); @@ -1075,7 +1075,7 @@ FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **i *inout_pnext_chain = vk_struct; } } - return {&vk_struct->depthClampZeroOne, "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT::depthClampZeroOne"}; + return {&vk_struct->depthClampZeroOne, "VkPhysicalDeviceDepthClampZeroOneFeaturesKHR::depthClampZeroOne"}; } case Feature::depthClipControl: { @@ -3693,6 +3693,21 @@ FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **i return {&vk_struct->maintenance7, "VkPhysicalDeviceMaintenance7FeaturesKHR::maintenance7"}; } + case Feature::maintenance8: { + auto vk_struct = const_cast( + vku::FindStructInPNextChain(*inout_pnext_chain)); + if (!vk_struct) { + vk_struct = new VkPhysicalDeviceMaintenance8FeaturesKHR; + *vk_struct = vku::InitStructHelper(); + if (*inout_pnext_chain) { + vvl::PnextChainAdd(*inout_pnext_chain, vk_struct); + } else { + *inout_pnext_chain = vk_struct; + } + } + return {&vk_struct->maintenance8, "VkPhysicalDeviceMaintenance8FeaturesKHR::maintenance8"}; + } + case Feature::memoryMapPlaced: { auto vk_struct = const_cast( vku::FindStructInPNextChain(*inout_pnext_chain)); @@ -4282,6 +4297,22 @@ FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **i "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT::pipelineLibraryGroupHandles"}; } + case Feature::pipelineOpacityMicromap: { + auto vk_struct = const_cast( + vku::FindStructInPNextChain(*inout_pnext_chain)); + if (!vk_struct) { + vk_struct = new VkPhysicalDevicePipelineOpacityMicromapFeaturesARM; + *vk_struct = vku::InitStructHelper(); + if (*inout_pnext_chain) { + vvl::PnextChainAdd(*inout_pnext_chain, vk_struct); + } else { + *inout_pnext_chain = vk_struct; + } + } + return {&vk_struct->pipelineOpacityMicromap, + "VkPhysicalDevicePipelineOpacityMicromapFeaturesARM::pipelineOpacityMicromap"}; + } + case Feature::pipelinePropertiesIdentifier: { auto vk_struct = const_cast( vku::FindStructInPNextChain(*inout_pnext_chain)); @@ -4357,21 +4388,21 @@ FeatureAndName AddFeature(APIVersion api_version, vkt::Feature feature, void **i } #ifdef VK_ENABLE_BETA_EXTENSIONS - case Feature::constantAlphaColorBlendFactors : { - auto vk_struct = const_cast( - vku::FindStructInPNextChain(*inout_pnext_chain)); - if (!vk_struct) { - vk_struct = new VkPhysicalDevicePortabilitySubsetFeaturesKHR; - *vk_struct = vku::InitStructHelper(); - if (*inout_pnext_chain) { - vvl::PnextChainAdd(*inout_pnext_chain, vk_struct); - } else { - *inout_pnext_chain = vk_struct; + case Feature::constantAlphaColorBlendFactors : { + auto vk_struct = const_cast( + vku::FindStructInPNextChain(*inout_pnext_chain)); + if (!vk_struct) { + vk_struct = new VkPhysicalDevicePortabilitySubsetFeaturesKHR; + *vk_struct = vku::InitStructHelper(); + if (*inout_pnext_chain) { + vvl::PnextChainAdd(*inout_pnext_chain, vk_struct); + } else { + *inout_pnext_chain = vk_struct; + } } + return {&vk_struct->constantAlphaColorBlendFactors, + "VkPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactors"}; } - return {&vk_struct->constantAlphaColorBlendFactors, - "VkPhysicalDevicePortabilitySubsetFeaturesKHR::constantAlphaColorBlendFactors"}; - } #endif // VK_ENABLE_BETA_EXTENSIONS #ifdef VK_ENABLE_BETA_EXTENSIONS diff --git a/layers/vulkan/generated/feature_requirements_helper.h b/layers/vulkan/generated/feature_requirements_helper.h index 9ea401b6321..61ba1b1010b 100644 --- a/layers/vulkan/generated/feature_requirements_helper.h +++ b/layers/vulkan/generated/feature_requirements_helper.h @@ -144,7 +144,7 @@ enum class Feature { leastRepresentableValueForceUnormRepresentation, // VkPhysicalDeviceDepthClampControlFeaturesEXT depthClampControl, - // VkPhysicalDeviceDepthClampZeroOneFeaturesEXT + // VkPhysicalDeviceDepthClampZeroOneFeaturesKHR depthClampZeroOne, // VkPhysicalDeviceDepthClipControlFeaturesEXT depthClipControl, @@ -522,6 +522,8 @@ enum class Feature { maintenance6, // VkPhysicalDeviceMaintenance7FeaturesKHR maintenance7, + // VkPhysicalDeviceMaintenance8FeaturesKHR + maintenance8, // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT memoryMapPlaced, // VkPhysicalDeviceMapMemoryPlacedFeaturesEXT @@ -592,6 +594,8 @@ enum class Feature { pipelineExecutableInfo, // VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT pipelineLibraryGroupHandles, + // VkPhysicalDevicePipelineOpacityMicromapFeaturesARM + pipelineOpacityMicromap, // VkPhysicalDevicePipelinePropertiesFeaturesEXT pipelinePropertiesIdentifier, // VkPhysicalDevicePipelineProtectedAccessFeatures, VkPhysicalDeviceVulkan14Features diff --git a/layers/vulkan/generated/pnext_chain_extraction.cpp b/layers/vulkan/generated/pnext_chain_extraction.cpp index e9306e7994f..c66198b3dcd 100644 --- a/layers/vulkan/generated/pnext_chain_extraction.cpp +++ b/layers/vulkan/generated/pnext_chain_extraction.cpp @@ -3,9 +3,9 @@ /*************************************************************************** * - * Copyright (c) 2023-2024 The Khronos Group Inc. - * Copyright (c) 2023-2024 Valve Corporation - * Copyright (c) 2023-2024 LunarG, Inc. + * Copyright (c) 2023-2025 The Khronos Group Inc. + * Copyright (c) 2023-2025 Valve Corporation + * Copyright (c) 2023-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. @@ -1423,6 +1423,21 @@ void PnextChainFree(void *chain) { header->pNext = nullptr; delete reinterpret_cast(header); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_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; + delete reinterpret_cast(header); + break; case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: PnextChainFree(header->pNext); header->pNext = nullptr; @@ -2684,11 +2699,6 @@ void PnextChainFree(void *chain) { header->pNext = nullptr; delete reinterpret_cast(header); break; - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: - PnextChainFree(header->pNext); - header->pNext = nullptr; - delete reinterpret_cast(header); - break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: PnextChainFree(header->pNext); header->pNext = nullptr; @@ -3193,6 +3203,11 @@ void PnextChainFree(void *chain) { header->pNext = nullptr; delete reinterpret_cast(header); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM: + PnextChainFree(header->pNext); + header->pNext = nullptr; + delete reinterpret_cast(header); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: PnextChainFree(header->pNext); header->pNext = nullptr; diff --git a/layers/vulkan/generated/pnext_chain_extraction.h b/layers/vulkan/generated/pnext_chain_extraction.h index 99d721f4444..01e4895a7a9 100644 --- a/layers/vulkan/generated/pnext_chain_extraction.h +++ b/layers/vulkan/generated/pnext_chain_extraction.h @@ -3,9 +3,9 @@ /*************************************************************************** * - * Copyright (c) 2023-2024 The Khronos Group Inc. - * Copyright (c) 2023-2024 Valve Corporation - * Copyright (c) 2023-2024 LunarG, Inc. + * Copyright (c) 2023-2025 The Khronos Group Inc. + * Copyright (c) 2023-2025 Valve Corporation + * Copyright (c) 2023-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/layers/vulkan/generated/stateless_validation_helper.cpp b/layers/vulkan/generated/stateless_validation_helper.cpp index c93ba100940..ef7e2aa7123 100644 --- a/layers/vulkan/generated/stateless_validation_helper.cpp +++ b/layers/vulkan/generated/stateless_validation_helper.cpp @@ -1976,6 +1976,40 @@ bool StatelessValidation::ValidatePnextFeatureStructContents(const Location& loc } } break; + // Validation code for VkPhysicalDeviceMaintenance8FeaturesKHR structure members + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR: { // Covers + // VUID-VkPhysicalDeviceMaintenance8FeaturesKHR-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkPhysicalDeviceMaintenance8FeaturesKHR); + if (!IsExtEnabled(device_extensions.vk_khr_maintenance8)) { + skip |= LogError(pnext_vuid, instance, pNext_loc, + "includes a pointer to a VkPhysicalDeviceMaintenance8FeaturesKHR, but when creating VkDevice, " + "the parent extension " + "(VK_KHR_maintenance8) was not included in ppEnabledExtensionNames."); + } + VkPhysicalDeviceMaintenance8FeaturesKHR* structure = (VkPhysicalDeviceMaintenance8FeaturesKHR*)header; + skip |= ValidateBool32(pNext_loc.dot(Field::maintenance8), structure->maintenance8); + } + } break; + + // Validation code for VkPhysicalDeviceDepthClampZeroOneFeaturesKHR structure members + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR: { // Covers + // VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesKHR-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkPhysicalDeviceDepthClampZeroOneFeaturesKHR); + if (!IsExtEnabled(device_extensions.vk_khr_depth_clamp_zero_one) && + !IsExtEnabled(device_extensions.vk_ext_depth_clamp_zero_one)) { + skip |= LogError(pnext_vuid, instance, pNext_loc, + "includes a pointer to a VkPhysicalDeviceDepthClampZeroOneFeaturesKHR, but when creating " + "VkDevice, the parent extension " + "(VK_KHR_depth_clamp_zero_one or VK_EXT_depth_clamp_zero_one) was not included in " + "ppEnabledExtensionNames."); + } + VkPhysicalDeviceDepthClampZeroOneFeaturesKHR* structure = (VkPhysicalDeviceDepthClampZeroOneFeaturesKHR*)header; + skip |= ValidateBool32(pNext_loc.dot(Field::depthClampZeroOne), structure->depthClampZeroOne); + } + } break; + // Validation code for VkPhysicalDeviceTransformFeedbackFeaturesEXT structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT: { // Covers // VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType @@ -3491,22 +3525,6 @@ bool StatelessValidation::ValidatePnextFeatureStructContents(const Location& loc } } break; - // Validation code for VkPhysicalDeviceDepthClampZeroOneFeaturesEXT structure members - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT: { // Covers - // VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesEXT-sType-sType - if (is_const_param) { - [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkPhysicalDeviceDepthClampZeroOneFeaturesEXT); - if (!IsExtEnabled(device_extensions.vk_ext_depth_clamp_zero_one)) { - skip |= LogError(pnext_vuid, instance, pNext_loc, - "includes a pointer to a VkPhysicalDeviceDepthClampZeroOneFeaturesEXT, but when creating " - "VkDevice, the parent extension " - "(VK_EXT_depth_clamp_zero_one) was not included in ppEnabledExtensionNames."); - } - VkPhysicalDeviceDepthClampZeroOneFeaturesEXT* structure = (VkPhysicalDeviceDepthClampZeroOneFeaturesEXT*)header; - skip |= ValidateBool32(pNext_loc.dot(Field::depthClampZeroOne), structure->depthClampZeroOne); - } - } break; - // Validation code for VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT: { // Covers // VUID-VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT-sType-sType @@ -4413,6 +4431,23 @@ bool StatelessValidation::ValidatePnextFeatureStructContents(const Location& loc } } break; + // Validation code for VkPhysicalDevicePipelineOpacityMicromapFeaturesARM structure members + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM: { // Covers + // VUID-VkPhysicalDevicePipelineOpacityMicromapFeaturesARM-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkPhysicalDevicePipelineOpacityMicromapFeaturesARM); + if (!IsExtEnabled(device_extensions.vk_arm_pipeline_opacity_micromap)) { + skip |= LogError(pnext_vuid, instance, pNext_loc, + "includes a pointer to a VkPhysicalDevicePipelineOpacityMicromapFeaturesARM, but when " + "creating VkDevice, the parent extension " + "(VK_ARM_pipeline_opacity_micromap) was not included in ppEnabledExtensionNames."); + } + VkPhysicalDevicePipelineOpacityMicromapFeaturesARM* structure = + (VkPhysicalDevicePipelineOpacityMicromapFeaturesARM*)header; + skip |= ValidateBool32(pNext_loc.dot(Field::pipelineOpacityMicromap), structure->pipelineOpacityMicromap); + } + } break; + // Validation code for VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT: { // Covers // VUID-VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT-sType-sType @@ -7947,6 +7982,25 @@ bool StatelessValidation::ValidatePnextStructContents(const Location& loc, const // No Validation code for VkPhysicalDeviceLayeredApiVulkanPropertiesKHR structure members -- Covers // VUID-VkPhysicalDeviceLayeredApiVulkanPropertiesKHR-sType-sType + // Validation code for VkMemoryBarrierAccessFlags3KHR structure members + case VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR: { // Covers VUID-VkMemoryBarrierAccessFlags3KHR-sType-sType + if (is_const_param) { + [[maybe_unused]] const Location pNext_loc = loc.pNext(Struct::VkMemoryBarrierAccessFlags3KHR); + if (!IsExtEnabled(device_extensions.vk_khr_maintenance8)) { + skip |= + LogError(pnext_vuid, instance, pNext_loc, "extended struct requires the extensions VK_KHR_maintenance8"); + } + VkMemoryBarrierAccessFlags3KHR* structure = (VkMemoryBarrierAccessFlags3KHR*)header; + skip |= ValidateFlags(pNext_loc.dot(Field::srcAccessMask3), vvl::FlagBitmask::VkAccessFlagBits3KHR, + AllVkAccessFlagBits3KHR, structure->srcAccessMask3, kOptionalFlags, VK_NULL_HANDLE, + "VUID-VkMemoryBarrierAccessFlags3KHR-srcAccessMask3-parameter"); + + skip |= ValidateFlags(pNext_loc.dot(Field::dstAccessMask3), vvl::FlagBitmask::VkAccessFlagBits3KHR, + AllVkAccessFlagBits3KHR, structure->dstAccessMask3, kOptionalFlags, VK_NULL_HANDLE, + "VUID-VkMemoryBarrierAccessFlags3KHR-dstAccessMask3-parameter"); + } + } break; + // Validation code for VkDebugReportCallbackCreateInfoEXT structure members case VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT: { // Covers // VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType @@ -10521,7 +10575,7 @@ bool StatelessValidation::PreCallValidateCreateDevice(VkPhysicalDevice physicalD VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT, @@ -10582,6 +10636,7 @@ bool StatelessValidation::PreCallValidateCreateDevice(VkPhysicalDevice physicalD VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, @@ -10604,6 +10659,7 @@ bool StatelessValidation::PreCallValidateCreateDevice(VkPhysicalDevice physicalD VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES, @@ -15090,7 +15146,7 @@ bool StatelessValidation::PreCallValidateCmdSetEvent2(VkCommandBuffer commandBuf [[maybe_unused]] const Location pBufferMemoryBarriers_loc = pDependencyInfo_loc.dot(Field::pBufferMemoryBarriers, bufferMemoryBarrierIndex); constexpr std::array allowed_structs_VkBufferMemoryBarrier2 = { - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT}; + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR}; skip |= ValidateStructPnext( pBufferMemoryBarriers_loc, pDependencyInfo->pBufferMemoryBarriers[bufferMemoryBarrierIndex].pNext, @@ -15135,7 +15191,8 @@ bool StatelessValidation::PreCallValidateCmdSetEvent2(VkCommandBuffer commandBuf [[maybe_unused]] const Location pImageMemoryBarriers_loc = pDependencyInfo_loc.dot(Field::pImageMemoryBarriers, imageMemoryBarrierIndex); constexpr std::array allowed_structs_VkImageMemoryBarrier2 = { - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT}; + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT}; skip |= ValidateStructPnext( pImageMemoryBarriers_loc, pDependencyInfo->pImageMemoryBarriers[imageMemoryBarrierIndex].pNext, @@ -15262,7 +15319,8 @@ bool StatelessValidation::PreCallValidateCmdWaitEvents2(VkCommandBuffer commandB [[maybe_unused]] const Location pBufferMemoryBarriers_loc = pDependencyInfos_loc.dot(Field::pBufferMemoryBarriers, bufferMemoryBarrierIndex); constexpr std::array allowed_structs_VkBufferMemoryBarrier2 = { - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT}; + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR}; skip |= ValidateStructPnext(pBufferMemoryBarriers_loc, pDependencyInfos[eventIndex].pBufferMemoryBarriers[bufferMemoryBarrierIndex].pNext, @@ -15311,7 +15369,8 @@ bool StatelessValidation::PreCallValidateCmdWaitEvents2(VkCommandBuffer commandB [[maybe_unused]] const Location pImageMemoryBarriers_loc = pDependencyInfos_loc.dot(Field::pImageMemoryBarriers, imageMemoryBarrierIndex); constexpr std::array allowed_structs_VkImageMemoryBarrier2 = { - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT}; + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, + VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT}; skip |= ValidateStructPnext( pImageMemoryBarriers_loc, pDependencyInfos[eventIndex].pImageMemoryBarriers[imageMemoryBarrierIndex].pNext, @@ -15420,7 +15479,7 @@ bool StatelessValidation::PreCallValidateCmdPipelineBarrier2(VkCommandBuffer com [[maybe_unused]] const Location pBufferMemoryBarriers_loc = pDependencyInfo_loc.dot(Field::pBufferMemoryBarriers, bufferMemoryBarrierIndex); constexpr std::array allowed_structs_VkBufferMemoryBarrier2 = { - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT}; + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR}; skip |= ValidateStructPnext( pBufferMemoryBarriers_loc, pDependencyInfo->pBufferMemoryBarriers[bufferMemoryBarrierIndex].pNext, @@ -15465,7 +15524,8 @@ bool StatelessValidation::PreCallValidateCmdPipelineBarrier2(VkCommandBuffer com [[maybe_unused]] const Location pImageMemoryBarriers_loc = pDependencyInfo_loc.dot(Field::pImageMemoryBarriers, imageMemoryBarrierIndex); constexpr std::array allowed_structs_VkImageMemoryBarrier2 = { - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT}; + VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT, VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR, + VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT}; skip |= ValidateStructPnext( pImageMemoryBarriers_loc, pDependencyInfo->pImageMemoryBarriers[imageMemoryBarrierIndex].pNext, diff --git a/layers/vulkan/generated/test_icd_helper.h b/layers/vulkan/generated/test_icd_helper.h index 464847c2ddc..9496ba4a5b3 100644 --- a/layers/vulkan/generated/test_icd_helper.h +++ b/layers/vulkan/generated/test_icd_helper.h @@ -217,6 +217,8 @@ static const std::unordered_map device_extension_map = { {VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME, VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_SPEC_VERSION}, {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_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}, {VK_IMG_FILTER_CUBIC_EXTENSION_NAME, VK_IMG_FILTER_CUBIC_SPEC_VERSION}, @@ -480,6 +482,7 @@ static const std::unordered_map device_extension_map = { {VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME, VK_EXT_DEPTH_CLAMP_CONTROL_SPEC_VERSION}, {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}, {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}, diff --git a/layers/vulkan/generated/thread_safety.cpp b/layers/vulkan/generated/thread_safety.cpp index 8ddccb4c833..2d6e5402927 100644 --- a/layers/vulkan/generated/thread_safety.cpp +++ b/layers/vulkan/generated/thread_safety.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. @@ -726,27 +726,25 @@ void ThreadSafety::PostCallRecordGetPipelineCacheData(VkDevice device, VkPipelin void ThreadSafety::PreCallRecordMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches, const RecordObject& record_obj) { StartReadObjectParentInstance(device, record_obj.location); - StartWriteObject(dstCache, record_obj.location); + StartReadObject(dstCache, record_obj.location); if (pSrcCaches) { for (uint32_t index = 0; index < srcCacheCount; index++) { StartReadObject(pSrcCaches[index], record_obj.location); } } - // Host access to dstCache must be externally synchronized } void ThreadSafety::PostCallRecordMergePipelineCaches(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches, const RecordObject& record_obj) { FinishReadObjectParentInstance(device, record_obj.location); - FinishWriteObject(dstCache, record_obj.location); + FinishReadObject(dstCache, record_obj.location); if (pSrcCaches) { for (uint32_t index = 0; index < srcCacheCount; index++) { FinishReadObject(pSrcCaches[index], record_obj.location); } } - // Host access to dstCache must be externally synchronized } void ThreadSafety::PreCallRecordCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, diff --git a/layers/vulkan/generated/thread_safety_commands.h b/layers/vulkan/generated/thread_safety_commands.h index 25258c8857d..f64d582c27d 100644 --- a/layers/vulkan/generated/thread_safety_commands.h +++ b/layers/vulkan/generated/thread_safety_commands.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/thread_safety_counter_bodies.h b/layers/vulkan/generated/thread_safety_counter_bodies.h index e509e9b9f4a..b18158cf811 100644 --- a/layers/vulkan/generated/thread_safety_counter_bodies.h +++ b/layers/vulkan/generated/thread_safety_counter_bodies.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/thread_safety_counter_definitions.h b/layers/vulkan/generated/thread_safety_counter_definitions.h index aca3875efc5..9865ecd93e5 100644 --- a/layers/vulkan/generated/thread_safety_counter_definitions.h +++ b/layers/vulkan/generated/thread_safety_counter_definitions.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/thread_safety_counter_instances.h b/layers/vulkan/generated/thread_safety_counter_instances.h index a69613b06ef..c5be682be44 100644 --- a/layers/vulkan/generated/thread_safety_counter_instances.h +++ b/layers/vulkan/generated/thread_safety_counter_instances.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/valid_flag_values.cpp b/layers/vulkan/generated/valid_flag_values.cpp index 875a88aa3ab..91a3a30c059 100644 --- a/layers/vulkan/generated/valid_flag_values.cpp +++ b/layers/vulkan/generated/valid_flag_values.cpp @@ -3,9 +3,9 @@ /*************************************************************************** * - * Copyright (c) 2024 The Khronos Group Inc. - * Copyright (c) 2024 Valve Corporation - * Copyright (c) 2024 LunarG, Inc. + * Copyright (c) 2025 The Khronos Group Inc. + * Copyright (c) 2025 Valve Corporation + * Copyright (c) 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. @@ -451,6 +451,11 @@ vvl::Extensions StatelessValidation::IsValidFlagValue(vvl::FlagBitmask flag_bitm return {vvl::Extension::_VK_EXT_pipeline_creation_cache_control}; } } + if (value & (VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR)) { + if (!IsExtEnabled(device_extensions.vk_khr_maintenance8)) { + return {vvl::Extension::_VK_KHR_maintenance8}; + } + } return {}; case vvl::FlagBitmask::VkPipelineCreateFlagBits: if (value & (VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT)) { @@ -698,6 +703,11 @@ vvl::Extensions StatelessValidation::IsValidFlagValue(vvl::FlagBitmask flag_bitm return {vvl::Extension::_VK_EXT_attachment_feedback_loop_layout}; } } + if (value & (VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR)) { + if (!IsExtEnabled(device_extensions.vk_khr_maintenance8)) { + return {vvl::Extension::_VK_KHR_maintenance8}; + } + } return {}; case vvl::FlagBitmask::VkFramebufferCreateFlagBits: if (value & (VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT)) { @@ -1027,6 +1037,11 @@ vvl::Extensions StatelessValidation::IsValidFlag64Value(vvl::FlagBitmask flag_bi return {vvl::Extension::_VK_EXT_legacy_dithering}; } } + if (value & (VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM)) { + if (!IsExtEnabled(device_extensions.vk_arm_pipeline_opacity_micromap)) { + return {vvl::Extension::_VK_ARM_pipeline_opacity_micromap}; + } + } if (value & (VK_PIPELINE_CREATE_2_CAPTURE_DATA_BIT_KHR)) { if (!IsExtEnabled(device_extensions.vk_khr_pipeline_binary)) { return {vvl::Extension::_VK_KHR_pipeline_binary}; @@ -1289,6 +1304,8 @@ std::string StatelessValidation::DescribeFlagBitmaskValue64(vvl::FlagBitmask fla return string_VkPipelineCreateFlags2(value); case vvl::FlagBitmask::VkBufferUsageFlagBits2: return string_VkBufferUsageFlags2(value); + case vvl::FlagBitmask::VkAccessFlagBits3KHR: + return string_VkAccessFlags3KHR(value); case vvl::FlagBitmask::VkPhysicalDeviceSchedulingControlsFlagBitsARM: return string_VkPhysicalDeviceSchedulingControlsFlagsARM(value); case vvl::FlagBitmask::VkMemoryDecompressionMethodFlagBitsNV: diff --git a/layers/vulkan/generated/vk_extension_helper.cpp b/layers/vulkan/generated/vk_extension_helper.cpp index 3c5a3851714..99470efc802 100644 --- a/layers/vulkan/generated/vk_extension_helper.cpp +++ b/layers/vulkan/generated/vk_extension_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. @@ -146,6 +146,8 @@ vvl::Extension GetExtension(std::string extension) { {"VK_KHR_video_encode_quantization_map", vvl::Extension::_VK_KHR_video_encode_quantization_map}, {"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_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}, {"VK_EXT_depth_range_unrestricted", vvl::Extension::_VK_EXT_depth_range_unrestricted}, @@ -410,6 +412,7 @@ vvl::Extension GetExtension(std::string extension) { {"VK_EXT_depth_clamp_control", vvl::Extension::_VK_EXT_depth_clamp_control}, {"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_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 6b849cc91a9..f445176dc09 100644 --- a/layers/vulkan/generated/vk_extension_helper.h +++ b/layers/vulkan/generated/vk_extension_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. @@ -389,6 +389,8 @@ struct DeviceExtensions : public InstanceExtensions { ExtEnabled vk_khr_video_encode_quantization_map{kNotEnabled}; ExtEnabled vk_khr_shader_relaxed_extended_instruction{kNotEnabled}; ExtEnabled vk_khr_maintenance7{kNotEnabled}; + ExtEnabled vk_khr_maintenance8{kNotEnabled}; + ExtEnabled vk_khr_depth_clamp_zero_one{kNotEnabled}; ExtEnabled vk_nv_glsl_shader{kNotEnabled}; ExtEnabled vk_ext_depth_range_unrestricted{kNotEnabled}; ExtEnabled vk_img_filter_cubic{kNotEnabled}; @@ -629,6 +631,7 @@ struct DeviceExtensions : public InstanceExtensions { ExtEnabled vk_ext_depth_clamp_control{kNotEnabled}; ExtEnabled vk_huawei_hdr_vivid{kNotEnabled}; ExtEnabled vk_nv_cooperative_matrix2{kNotEnabled}; + ExtEnabled vk_arm_pipeline_opacity_micromap{kNotEnabled}; ExtEnabled vk_ext_vertex_attribute_robustness{kNotEnabled}; ExtEnabled vk_khr_acceleration_structure{kNotEnabled}; ExtEnabled vk_khr_ray_tracing_pipeline{kNotEnabled}; @@ -980,6 +983,11 @@ struct DeviceExtensions : public InstanceExtensions { Info(&DeviceExtensions::vk_khr_shader_relaxed_extended_instruction, {})}, {vvl::Extension::_VK_KHR_maintenance7, 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_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}}})}, {vvl::Extension::_VK_NV_glsl_shader, Info(&DeviceExtensions::vk_nv_glsl_shader, {})}, {vvl::Extension::_VK_EXT_depth_range_unrestricted, Info(&DeviceExtensions::vk_ext_depth_range_unrestricted, {})}, {vvl::Extension::_VK_IMG_filter_cubic, Info(&DeviceExtensions::vk_img_filter_cubic, {})}, @@ -1710,6 +1718,9 @@ struct DeviceExtensions : public InstanceExtensions { {vvl::Extension::_VK_NV_cooperative_matrix2, Info(&DeviceExtensions::vk_nv_cooperative_matrix2, {{{&DeviceExtensions::vk_khr_cooperative_matrix, VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME}}})}, + {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}}})}, {vvl::Extension::_VK_EXT_vertex_attribute_robustness, Info(&DeviceExtensions::vk_ext_vertex_attribute_robustness, {{{&DeviceExtensions::vk_khr_get_physical_device_properties2, @@ -1906,6 +1917,8 @@ constexpr bool IsDeviceExtension(vvl::Extension extension) { case vvl::Extension::_VK_KHR_video_encode_quantization_map: 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_depth_clamp_zero_one: case vvl::Extension::_VK_NV_glsl_shader: case vvl::Extension::_VK_EXT_depth_range_unrestricted: case vvl::Extension::_VK_IMG_filter_cubic: @@ -2146,6 +2159,7 @@ constexpr bool IsDeviceExtension(vvl::Extension extension) { case vvl::Extension::_VK_EXT_depth_clamp_control: 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_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_validation_error_messages.h b/layers/vulkan/generated/vk_validation_error_messages.h index e30163d322e..29ff7659de4 100644 --- a/layers/vulkan/generated/vk_validation_error_messages.h +++ b/layers/vulkan/generated/vk_validation_error_messages.h @@ -1,11 +1,11 @@ // *** THIS FILE IS GENERATED - DO NOT EDIT *** // See generate_spec_error_message.py for modifications -// Based on Vulkan specification version: 1.4.304 +// Based on Vulkan specification version: 1.4.305 /*************************************************************************** * - * Copyright (c) 2016-2024 Google Inc. - * Copyright (c) 2016-2024 LunarG, Inc. + * Copyright (c) 2016-2025 Google Inc. + * Copyright (c) 2016-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. @@ -339,6 +339,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-RuntimeSpirv-Offset-06345", "The first element of the Offset operand of InterpolateAtOffset must be less than or equal to fragwidth x (maxInterpolationOffset + ULP ) - ULP where fragwidth is the width of the current fragment in pixels and ULP = 1 / 2^subPixelInterpolationOffsetBits^", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-Offset-06346", "The second element of the Offset operand of InterpolateAtOffset must be greater than or equal to fragheight x minInterpolationOffset where fragheight is the height of the current fragment in pixels", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-Offset-06347", "The second element of the Offset operand of InterpolateAtOffset must be less than or equal to fragheight x (maxInterpolationOffset + ULP ) - ULP where fragheight is the height of the current fragment in pixels and ULP = 1 / 2^subPixelInterpolationOffsetBits^", "appendices/spirvenv.html"}, + {"VUID-RuntimeSpirv-Offset-10213", "If the maintenance8 feature is not enabled, image operand Offset must only be used with OpImage*Gather instructions", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpCooperativeMatrixLoadKHR-08986", "For OpCooperativeMatrixLoadKHR and OpCooperativeMatrixStoreKHR instructions, the Pointer and Stride operands must be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending on ColumnMajor) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpCooperativeMatrixLoadNV-06324", "For OpCooperativeMatrixLoadNV and OpCooperativeMatrixStoreNV instructions, the Pointer and Stride operands must be aligned to at least the lesser of 16 bytes or the natural alignment of a row or column (depending on ColumnMajor) of the matrix (where the natural alignment is the number of columns/rows multiplied by the component size)", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpCooperativeMatrixMulAddKHR-10060", "For OpCooperativeMatrixMulAddKHR, the operands must match a supported VkCooperativeMatrixPropertiesKHR", "appendices/spirvenv.html"}, @@ -376,8 +377,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-RuntimeSpirv-OpImageBlockMatchWindow-09224", "If a OpImageBlockMatchWindow*QCOM or OpImageBlockMatchGather*QCOM operation is used, then target sampled image and reference sampled image parameters must have been created with sampler object with unnormalizedCoordinates equal to VK_TRUE", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06989", "If an OpImageBoxFilterQCOM operation is used, then Box Size.y must be equal to or greater than 1.0 and less than or equal to maxBoxFilterBlockSize.height", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpImageBoxFilterQCOM-06990", "If an OpImageBoxFilterQCOM operation is used, then Sampled Texture Image and Box Size parameters must be dynamically uniform", "appendices/spirvenv.html"}, - {"VUID-RuntimeSpirv-OpImageSample-06435", "If an OpImageSample* or OpImageFetch* operation has an image operand of ConstOffset then the offset value must be greater than or equal to minTexelOffset", "appendices/spirvenv.html"}, - {"VUID-RuntimeSpirv-OpImageSample-06436", "If an OpImageSample* or OpImageFetch* operation has an image operand of ConstOffset then the offset value must be less than or equal to maxTexelOffset", "appendices/spirvenv.html"}, + {"VUID-RuntimeSpirv-OpImageSample-06435", "If an OpImageSample* or OpImageFetch* operation has an image operand of Offset or ConstOffset then the offset value must be greater than or equal to minTexelOffset", "appendices/spirvenv.html"}, + {"VUID-RuntimeSpirv-OpImageSample-06436", "If an OpImageSample* or OpImageFetch* operation has an image operand of Offset or ConstOffset then the offset value must be less than or equal to maxTexelOffset", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06979", "If an OpImageWeightedSampleQCOM operation is used, then the Texture Sampled Image and Weight Image parameters must both be dynamically uniform for the quad", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06980", "If an OpImageWeightedSampleQCOM operation is used, then the Weight Image parameter must be of Storage Class UniformConstant and type OpTypeImage with Depth=0, Dim=2D, Arrayed=1, MS=0, and Sampled=1", "appendices/spirvenv.html"}, {"VUID-RuntimeSpirv-OpImageWeightedSampleQCOM-06981", "If an OpImageWeightedSampleQCOM operation is used, then the Weight Image parameter must be decorated with WeightTextureQCOM", "appendices/spirvenv.html"}, @@ -627,7 +628,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-StandaloneSpirv-None-07321", "If the Scope for memory is Workgroup, then it must only be used in the task, mesh, tessellation control, or compute Execution Model", "appendices/spirvenv.html"}, {"VUID-StandaloneSpirv-None-08720", "If the Storage Class is TileImageEXT, then it must only be used in the fragment execution model", "appendices/spirvenv.html"}, {"VUID-StandaloneSpirv-None-08724", "The TileImageEXT Storage Class must only be used for declaring tile image variables", "appendices/spirvenv.html"}, - {"VUID-StandaloneSpirv-Offset-04663", "Image operand Offset must only be used with OpImage*Gather instructions", "appendices/spirvenv.html"}, {"VUID-StandaloneSpirv-Offset-04687", "Output variables or block members decorated with Offset that have a 64-bit type, or a composite type containing a 64-bit type, must specify an Offset value aligned to a 8 byte boundary", "appendices/spirvenv.html"}, {"VUID-StandaloneSpirv-Offset-04689", "The size of any output block containing any member decorated with Offset that is a 64-bit type must be a multiple of 8", "appendices/spirvenv.html"}, {"VUID-StandaloneSpirv-Offset-04690", "The first member of an output block specifying a Offset decoration must specify a Offset value that is aligned to an 8 byte boundary if that block contains any member decorated with Offset and is a 64-bit type", "appendices/spirvenv.html"}, @@ -806,6 +806,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09488", "If deviceAddress is not zero, it must have been retrieved from an identically created acceleration structure, except for buffer and deviceAddress", "chapters/resources.html"}, {"VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09489", "If deviceAddress is not zero, buffer must have been created identically to the buffer used to create the acceleration structure from which deviceAddress was retrieved, except for VkBufferOpaqueCaptureAddressCreateInfo::opaqueCaptureAddress", "chapters/resources.html"}, {"VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-09490", "If deviceAddress is not zero, buffer must have been created with a VkBufferOpaqueCaptureAddressCreateInfo::opaqueCaptureAddress that was retrieved from vkGetBufferOpaqueCaptureAddress for the buffer that was used to create the acceleration structure from which deviceAddress was retrieved", "chapters/resources.html"}, + {"VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-10393", "If deviceAddress is not zero, it must be a valid device address obtained from vkGetAccelerationStructureDeviceAddressKHR", "chapters/resources.html"}, {"VUID-VkAccelerationStructureCreateInfoKHR-offset-03616", "The sum of offset and size must be less than the size of buffer", "chapters/resources.html"}, {"VUID-VkAccelerationStructureCreateInfoKHR-offset-03734", "offset must be a multiple of 256 bytes", "chapters/resources.html"}, {"VUID-VkAccelerationStructureCreateInfoKHR-pNext-08109", "If the pNext chain includes a VkOpaqueCaptureDescriptorDataCreateInfoEXT structure, createFlags must contain VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT", "chapters/resources.html"}, @@ -1240,6 +1241,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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"}, {"VUID-VkBlitImageInfo2-filter-09204", "If filter is VK_FILTER_CUBIC_EXT and if the selectableCubicWeights feature is not enabled then the cubic weights must be VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-filter-parameter", "filter must be a valid VkFilter value", "chapters/copies.html"}, + {"VUID-VkBlitImageInfo2-maintenance8-10207", "If the maintenance8 feature is enabled and srcImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer must be 0, and srcSubresource.layerCount must be 1", "chapters/copies.html"}, + {"VUID-VkBlitImageInfo2-maintenance8-10208", "If the maintenance8 feature is enabled and 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-VkBlitImageInfo2-pNext-pNext", "pNext must be NULL or a pointer to a valid instance of VkBlitImageCubicWeightsInfoQCOM", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-pRegions-00215", "The source region specified by each element of pRegions must be a region that is contained within srcImage", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-pRegions-00216", "The destination region specified by each element of pRegions must be a region that is contained within dstImage", "chapters/copies.html"}, @@ -1256,7 +1259,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBlitImageInfo2-srcImage-00231", "If either of srcImage or dstImage was created with a depth/stencil format, the other must have exactly the same format", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-srcImage-00232", "If srcImage was created with a depth/stencil format, filter must be VK_FILTER_NEAREST", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-srcImage-00233", "srcImage must have been created with a samples value of VK_SAMPLE_COUNT_1_BIT", "chapters/copies.html"}, - {"VUID-VkBlitImageInfo2-srcImage-00240", "If either srcImage or dstImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0, and srcSubresource.layerCount and dstSubresource.layerCount must each be 1", "chapters/copies.html"}, + {"VUID-VkBlitImageInfo2-srcImage-00240", "If the maintenance8 feature is not enabled and either srcImage or dstImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0, and srcSubresource.layerCount and dstSubresource.layerCount must each be 1", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-srcImage-00245", "If srcImage is of type VK_IMAGE_TYPE_1D, then for each element of pRegions, srcOffsets[0].y must be 0 and srcOffsets[1].y must be 1", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-srcImage-00247", "If srcImage is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then for each element of pRegions, srcOffsets[0].z must be 0 and srcOffsets[1].z must be 1", "chapters/copies.html"}, {"VUID-VkBlitImageInfo2-srcImage-01999", "The format features of srcImage must contain VK_FORMAT_FEATURE_BLIT_SRC_BIT", "chapters/copies.html"}, @@ -1374,7 +1377,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBufferMemoryBarrier-sType-unique", "The sType value of each struct in the pNext chain must be unique", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier-size-01188", "If size is not equal to VK_WHOLE_SIZE, size must be greater than 0", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier-size-01189", "If size is not equal to VK_WHOLE_SIZE, size must be less than or equal to than the size of buffer minus offset", "chapters/synchronization.html"}, - {"VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087", "If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one of srcQueueFamilyIndex or dstQueueFamilyIndex must not be VK_QUEUE_FAMILY_EXTERNAL or VK_QUEUE_FAMILY_FOREIGN_EXT", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-09099", "If the VK_EXT_queue_family_foreign extension is not enabled srcQueueFamilyIndex must not be VK_QUEUE_FAMILY_FOREIGN_EXT", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-None-09097", "If the VK_KHR_external_memory extension is not enabled, and the value of VkApplicationInfo::apiVersion used to create the VkInstance is not greater than or equal to Version 1.1, srcQueueFamilyIndex must not be VK_QUEUE_FAMILY_EXTERNAL", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-None-09098", "If the VK_KHR_external_memory extension is not enabled, and the value of VkApplicationInfo::apiVersion used to create the VkInstance is not greater than or equal to Version 1.1, dstQueueFamilyIndex must not be VK_QUEUE_FAMILY_EXTERNAL", "chapters/synchronization.html"}, @@ -1438,7 +1440,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBufferMemoryBarrier2-dstStageMask-07946", "If neither the VK_NV_ray_tracing extension or the rayTracingPipeline feature are enabled, dstStageMask must not contain VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-dstStageMask-parameter", "dstStageMask must be a valid combination of VkPipelineStageFlagBits2 values", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-offset-01187", "offset must be less than the size of buffer", "chapters/synchronization.html"}, - {"VUID-VkBufferMemoryBarrier2-pNext-pNext", "pNext must be NULL or a pointer to a valid instance of VkExternalMemoryAcquireUnmodifiedEXT", "chapters/synchronization.html"}, + {"VUID-VkBufferMemoryBarrier2-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 VkExternalMemoryAcquireUnmodifiedEXT or VkMemoryBarrierAccessFlags3KHR", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-sType-sType", "sType must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-sType-unique", "The sType value of each struct in the pNext chain must be unique", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-size-01188", "If size is not equal to VK_WHOLE_SIZE, size must be greater than 0", "chapters/synchronization.html"}, @@ -1485,7 +1487,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBufferMemoryBarrier2-srcAccessMask-07458", "If srcAccessMask includes VK_ACCESS_2_MICROMAP_READ_BIT_EXT, srcStageMask must include VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT or VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-srcAccessMask-08118", "If srcAccessMask includes VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT, srcStageMask must include VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT, or one of VK_PIPELINE_STAGE_*_SHADER_BIT stages", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-srcAccessMask-parameter", "srcAccessMask must be a valid combination of VkAccessFlagBits2 values", "chapters/synchronization.html"}, - {"VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-04087", "If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one of srcQueueFamilyIndex or dstQueueFamilyIndex must not be VK_QUEUE_FAMILY_EXTERNAL or VK_QUEUE_FAMILY_FOREIGN_EXT", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-srcQueueFamilyIndex-09099", "If the VK_EXT_queue_family_foreign extension is not enabled srcQueueFamilyIndex must not be VK_QUEUE_FAMILY_FOREIGN_EXT", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-srcStageMask-03851", "If either srcStageMask or dstStageMask includes VK_PIPELINE_STAGE_2_HOST_BIT, srcQueueFamilyIndex and dstQueueFamilyIndex must be equal", "chapters/synchronization.html"}, {"VUID-VkBufferMemoryBarrier2-srcStageMask-03929", "If the geometryShader feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT", "chapters/synchronization.html"}, @@ -1846,6 +1847,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageInfo2-dstOffset-01784", "The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-dstSubresource-07967", "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-VkCopyImageInfo2-dstSubresource-07968", "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-VkCopyImageInfo2-dstSubresource-10215", "If dstSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then srSubresource.aspectMask must not contain both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT.", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-pNext-pNext", "pNext must be NULL", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-pRegions-00124", "The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-pRegions-07278", "For each element of pRegions, srcOffset.x must be a multiple of the texel block extent width of the VkFormat of srcImage", "chapters/copies.html"}, @@ -1860,7 +1862,7 @@ 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 then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match", "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-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"}, @@ -1889,6 +1891,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkCopyImageInfo2-srcOffset-01783", "The srcOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcSubresource-07967", "The srcSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when srcImage was created", "chapters/copies.html"}, {"VUID-VkCopyImageInfo2-srcSubresource-07968", "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcSubresource-10209", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT, then maintenance8 must be enabled", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcSubresource-10210", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then maintenance8 must be enabled", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcSubresource-10211", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT, then the VkFormat values of srcImage and dstImage must be compatible according to the list of compatible depth-stencil and color formats", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcSubresource-10212", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then the VkFormat values of srcImage and dstImage must be compatible according to the list of compatible depth-stencil and color formats", "chapters/copies.html"}, + {"VUID-VkCopyImageInfo2-srcSubresource-10214", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then dstSubresource.aspectMask must not contain both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-bufferImageHeight-09107", "For each element of pRegions, bufferImageHeight must be a multiple of the texel block extent height of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-bufferRowLength-09106", "For each element of pRegions, bufferRowLength must be a multiple of the texel block extent width of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-VkCopyImageToBufferInfo2-bufferRowLength-09108", "For each element of pRegions, bufferRowLength divided by the texel block extent width and then multiplied by the texel block size of srcImage must be less than or equal to 231-1", "chapters/copies.html"}, @@ -3790,7 +3797,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL then image must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_SAMPLED_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "chapters/synchronization.html"}, - {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070", "If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one of srcQueueFamilyIndex or dstQueueFamilyIndex must not be VK_QUEUE_FAMILY_EXTERNAL or VK_QUEUE_FAMILY_FOREIGN_EXT", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07006", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT then image must have been created with either the VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bits, and the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT or VK_IMAGE_USAGE_SAMPLED_BIT usage bits, and the VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT usage bit", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07120", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR then image must have been created with VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-07121", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR then image must have been created with VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR", "chapters/synchronization.html"}, @@ -3893,7 +3899,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageMemoryBarrier2-oldLayout-01659", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-oldLayout-02088", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR then image must have been created with VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR set", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-oldLayout-parameter", "oldLayout must be a valid VkImageLayout value", "chapters/synchronization.html"}, - {"VUID-VkImageMemoryBarrier2-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 VkExternalMemoryAcquireUnmodifiedEXT or VkSampleLocationsInfoEXT", "chapters/synchronization.html"}, + {"VUID-VkImageMemoryBarrier2-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 VkExternalMemoryAcquireUnmodifiedEXT, VkMemoryBarrierAccessFlags3KHR, or VkSampleLocationsInfoEXT", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-sType-unique", "The sType value of each struct in the pNext chain must be unique", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-srcAccessMask-03900", "If srcAccessMask includes VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT, srcStageMask must include VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT, VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT, or VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT", "chapters/synchronization.html"}, @@ -3944,7 +3950,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04066", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04067", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL then image must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_SAMPLED_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04068", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "chapters/synchronization.html"}, - {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-04070", "If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one of srcQueueFamilyIndex or dstQueueFamilyIndex must not be VK_QUEUE_FAMILY_EXTERNAL or VK_QUEUE_FAMILY_FOREIGN_EXT", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07006", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT then image must have been created with either the VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT or VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT usage bits, and the VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT or VK_IMAGE_USAGE_SAMPLED_BIT usage bits, and the VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT usage bit", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07120", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR then image must have been created with VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR", "chapters/synchronization.html"}, {"VUID-VkImageMemoryBarrier2-srcQueueFamilyIndex-07121", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define an image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR then image must have been created with VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR", "chapters/synchronization.html"}, @@ -4642,6 +4647,9 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkMemoryBarrier2-srcStageMask-07316", "If neither of the shadingRateImage or the attachmentFragmentShadingRate features are enabled, srcStageMask must not contain VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR", "chapters/synchronization.html"}, {"VUID-VkMemoryBarrier2-srcStageMask-07946", "If neither the VK_NV_ray_tracing extension or the rayTracingPipeline feature are enabled, srcStageMask must not contain VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR", "chapters/synchronization.html"}, {"VUID-VkMemoryBarrier2-srcStageMask-parameter", "srcStageMask must be a valid combination of VkPipelineStageFlagBits2 values", "chapters/synchronization.html"}, + {"VUID-VkMemoryBarrierAccessFlags3KHR-dstAccessMask3-parameter", "dstAccessMask3 must be a valid combination of VkAccessFlagBits3KHR values", "chapters/synchronization.html"}, + {"VUID-VkMemoryBarrierAccessFlags3KHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_MEMORY_BARRIER_ACCESS_FLAGS_3_KHR", "chapters/synchronization.html"}, + {"VUID-VkMemoryBarrierAccessFlags3KHR-srcAccessMask3-parameter", "srcAccessMask3 must be a valid combination of VkAccessFlagBits3KHR values", "chapters/synchronization.html"}, {"VUID-VkMemoryDedicatedAllocateInfo-buffer-01436", "If buffer is not VK_NULL_HANDLE, buffer must have been created without VK_BUFFER_CREATE_SPARSE_BINDING_BIT set in VkBufferCreateInfo::flags", "chapters/memory.html"}, {"VUID-VkMemoryDedicatedAllocateInfo-buffer-01877", "If buffer is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, or VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, and the external handle was created by the Vulkan API, then the memory being imported must also be a dedicated buffer allocation and buffer must be identical to the buffer associated with the imported memory", "chapters/memory.html"}, {"VUID-VkMemoryDedicatedAllocateInfo-buffer-01879", "If buffer is not VK_NULL_HANDLE and VkMemoryAllocateInfo defines a memory import operation with handle type VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, the memory being imported must also be a dedicated buffer allocation and buffer must be identical to the buffer associated with the imported memory", "chapters/memory.html"}, @@ -4910,7 +4918,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV", "chapters/features.html"}, {"VUID-VkPhysicalDeviceDepthBiasControlFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT", "chapters/features.html"}, {"VUID-VkPhysicalDeviceDepthClampControlFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT", "chapters/features.html"}, - {"VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT", "chapters/features.html"}, + {"VUID-VkPhysicalDeviceDepthClampZeroOneFeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR", "chapters/features.html"}, {"VUID-VkPhysicalDeviceDepthClipControlFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT", "chapters/features.html"}, {"VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT", "chapters/features.html"}, {"VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES", "chapters/limits.html"}, @@ -5055,6 +5063,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDeviceMaintenance6Properties-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES", "chapters/limits.html"}, {"VUID-VkPhysicalDeviceMaintenance7FeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR", "chapters/features.html"}, {"VUID-VkPhysicalDeviceMaintenance7PropertiesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR", "chapters/limits.html"}, + {"VUID-VkPhysicalDeviceMaintenance8FeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR", "chapters/features.html"}, {"VUID-VkPhysicalDeviceMapMemoryPlacedFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT", "chapters/features.html"}, {"VUID-VkPhysicalDeviceMapMemoryPlacedPropertiesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT", "chapters/limits.html"}, {"VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT", "chapters/memory.html"}, @@ -5098,6 +5107,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDevicePipelineCreationCacheControlFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES", "chapters/features.html"}, {"VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR", "chapters/features.html"}, {"VUID-VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT", "chapters/features.html"}, + {"VUID-VkPhysicalDevicePipelineOpacityMicromapFeaturesARM-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_OPACITY_MICROMAP_FEATURES_ARM", "chapters/features.html"}, {"VUID-VkPhysicalDevicePipelinePropertiesFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT", "chapters/features.html"}, {"VUID-VkPhysicalDevicePipelineProtectedAccessFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES", "chapters/features.html"}, {"VUID-VkPhysicalDevicePipelineRobustnessFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES", "chapters/features.html"}, @@ -5286,9 +5296,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPipelineBinaryKeysAndDataKHR-binaryCount-arraylength", "binaryCount must be greater than 0", "chapters/pipelines.html"}, {"VUID-VkPipelineBinaryKeysAndDataKHR-pPipelineBinaryData-parameter", "pPipelineBinaryData must be a valid pointer to an array of binaryCount valid VkPipelineBinaryDataKHR structures", "chapters/pipelines.html"}, {"VUID-VkPipelineBinaryKeysAndDataKHR-pPipelineBinaryKeys-parameter", "pPipelineBinaryKeys must be a valid pointer to an array of binaryCount valid VkPipelineBinaryKeyKHR structures", "chapters/pipelines.html"}, + {"VUID-VkPipelineCacheCreateInfo-flags-10201", "If flags includes VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT, it must not include VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR", "chapters/pipelines.html"}, {"VUID-VkPipelineCacheCreateInfo-flags-parameter", "flags must be a valid combination of VkPipelineCacheCreateFlagBits values", "chapters/pipelines.html"}, {"VUID-VkPipelineCacheCreateInfo-initialDataSize-00768", "If initialDataSize is not 0, it must be equal to the size of pInitialData, as returned by vkGetPipelineCacheData when pInitialData was originally retrieved", "chapters/pipelines.html"}, {"VUID-VkPipelineCacheCreateInfo-initialDataSize-00769", "If initialDataSize is not 0, pInitialData must have been retrieved from a previous call to vkGetPipelineCacheData", "chapters/pipelines.html"}, + {"VUID-VkPipelineCacheCreateInfo-maintenance8-10200", "If the maintenance8 feature is not enabled, flags must not include VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR", "chapters/pipelines.html"}, {"VUID-VkPipelineCacheCreateInfo-pInitialData-parameter", "If initialDataSize is not 0, pInitialData must be a valid pointer to an array of initialDataSize bytes", "chapters/pipelines.html"}, {"VUID-VkPipelineCacheCreateInfo-pNext-pNext", "pNext must be NULL", "chapters/pipelines.html"}, {"VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892", "If the pipelineCreationCacheControl feature is not enabled, flags must not include VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT", "chapters/pipelines.html"}, @@ -5797,6 +5809,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkRayTracingPipelineCreateInfoKHR-flags-07986", "If flags contains the VK_PIPELINE_CREATE_DERIVATIVE_BIT flag, basePipelineIndex must be -1 or basePipelineHandle must be VK_NULL_HANDLE", "chapters/pipelines.html"}, {"VUID-VkRayTracingPipelineCreateInfoKHR-flags-08700", "If flags does not include VK_PIPELINE_CREATE_LIBRARY_BIT_KHR and either pLibraryInfo is NULL or its libraryCount is 0, groupCount must not be 0", "chapters/pipelines.html"}, {"VUID-VkRayTracingPipelineCreateInfoKHR-flags-08701", "If flags includes VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV, each element of pLibraryInfo->pLibraries must have been created with the VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV bit set", "chapters/pipelines.html"}, + {"VUID-VkRayTracingPipelineCreateInfoKHR-flags-10392", "flags must not include both VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT and VK_PIPELINE_CREATE_2_DISALLOW_OPACITY_MICROMAP_BIT_ARM", "chapters/pipelines.html"}, {"VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428", "The number of resources in layout accessible to each shader stage that is used by the pipeline must be less than or equal to VkPhysicalDeviceLimits::maxPerStageResources", "chapters/pipelines.html"}, {"VUID-VkRayTracingPipelineCreateInfoKHR-layout-07987", "If a push constant block is declared in a shader, a push constant range in layout must match the shader stage", "chapters/pipelines.html"}, {"VUID-VkRayTracingPipelineCreateInfoKHR-layout-07988", "If a resource variable is declared in a shader, the corresponding descriptor set in layout must match the shader stage", "chapters/pipelines.html"}, @@ -6513,13 +6526,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkShaderCreateInfoEXT-pCode-08449", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with the CullDistance BuiltIn decoration, that variable must not have an array size greater than VkPhysicalDeviceLimits::maxCullDistances", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08450", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes variables in its interface that are declared with the ClipDistance BuiltIn decoration and variables in its interface that are declared with the CullDistance BuiltIn decoration, those variables must not have array sizes which sum to more than VkPhysicalDeviceLimits::maxCombinedClipAndCullDistances", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08451", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and the identified entry point includes any variable in its interface that is declared with the SampleMask BuiltIn decoration, that variable must not have an array size greater than VkPhysicalDeviceLimits::maxSampleMaskWords", "chapters/shaders.html"}, - {"VUID-VkShaderCreateInfoEXT-pCode-08452", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_VERTEX_BIT, the identified entry point must not include any input variable in its interface that is decorated with CullDistance", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08453", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, and the identified entry point has an OpExecutionMode instruction specifying a patch size with OutputVertices, the patch size must be greater than 0 and less than or equal to VkPhysicalDeviceLimits::maxTessellationPatchSize", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08454", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_GEOMETRY_BIT, the identified entry point must have an OpExecutionMode instruction specifying a maximum output vertex count that is greater than 0 and less than or equal to VkPhysicalDeviceLimits::maxGeometryOutputVertices", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08455", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_GEOMETRY_BIT, the identified entry point must have an OpExecutionMode instruction specifying an invocation count that is greater than 0 and less than or equal to VkPhysicalDeviceLimits::maxGeometryShaderInvocations", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08456", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is a pre-rasterization shader stage, and the identified entry point writes to Layer for any primitive, it must write the same value to Layer for all vertices of a given primitive", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08457", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is a pre-rasterization shader stage, and the identified entry point writes to ViewportIndex for any primitive, it must write the same value to ViewportIndex for all vertices of a given primitive", "chapters/shaders.html"}, - {"VUID-VkShaderCreateInfoEXT-pCode-08458", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_FRAGMENT_BIT, the identified entry point must not include any output variables in its interface decorated with CullDistance", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08459", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, and stage is VK_SHADER_STAGE_FRAGMENT_BIT, and the identified entry point writes to FragDepth in any execution path, all execution paths that are not exclusive to helper invocations must either discard the fragment, or write or initialize the value of FragDepth", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08460", "If codeType is VK_SHADER_CODE_TYPE_SPIRV_EXT, the shader code in pCode must be valid as described by the Khronos SPIR-V Specification after applying the specializations provided in pSpecializationInfo, if any, and then converting all specialization constants into fixed constants", "chapters/shaders.html"}, {"VUID-VkShaderCreateInfoEXT-pCode-08492", "If codeType is VK_SHADER_CODE_TYPE_BINARY_EXT, pCode must be aligned to 16 bytes", "chapters/shaders.html"}, @@ -6691,6 +6702,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassBeginInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency-dependencyFlags-02520", "If dependencyFlags includes VK_DEPENDENCY_VIEW_LOCAL_BIT, srcSubpass must not be equal to VK_SUBPASS_EXTERNAL", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency-dependencyFlags-02521", "If dependencyFlags includes VK_DEPENDENCY_VIEW_LOCAL_BIT, dstSubpass must not be equal to VK_SUBPASS_EXTERNAL", "chapters/renderpass.html"}, + {"VUID-VkSubpassDependency-dependencyFlags-10203", "dependencyFlags must not include VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency-dependencyFlags-parameter", "dependencyFlags must be a valid combination of VkDependencyFlagBits values", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency-dstAccessMask-00869", "Any access flag included in dstAccessMask must be supported by one of the pipeline stages in dstStageMask, as specified in the table of supported access types", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency-dstAccessMask-parameter", "dstAccessMask must be a valid combination of VkAccessFlagBits values", "chapters/renderpass.html"}, @@ -6726,6 +6738,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassDependency2-dependencyFlags-03090", "If dependencyFlags includes VK_DEPENDENCY_VIEW_LOCAL_BIT, srcSubpass must not be equal to VK_SUBPASS_EXTERNAL", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency2-dependencyFlags-03091", "If dependencyFlags includes VK_DEPENDENCY_VIEW_LOCAL_BIT, dstSubpass must not be equal to VK_SUBPASS_EXTERNAL", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency2-dependencyFlags-03092", "If dependencyFlags does not include VK_DEPENDENCY_VIEW_LOCAL_BIT, viewOffset must be 0", "chapters/renderpass.html"}, + {"VUID-VkSubpassDependency2-dependencyFlags-10204", "dependencyFlags must not include VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency2-dependencyFlags-parameter", "dependencyFlags must be a valid combination of VkDependencyFlagBits values", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency2-dstAccessMask-03089", "Any access flag included in dstAccessMask must be supported by one of the pipeline stages in dstStageMask, as specified in the table of supported access types", "chapters/renderpass.html"}, {"VUID-VkSubpassDependency2-dstAccessMask-parameter", "dstAccessMask must be a valid combination of VkAccessFlagBits values", "chapters/renderpass.html"}, @@ -7016,7 +7029,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07770", "scalingBehavior must be 0 or a valid scaling method for the surface as returned in VkSurfacePresentScalingCapabilitiesEXT::supportedPresentScaling, given VkSwapchainCreateInfoKHR::presentMode in VkSurfacePresentModeEXT", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-07771", "If the swapchain is created with VkSwapchainPresentModesCreateInfoEXT, scalingBehavior must be 0 or a valid scaling method for the surface as returned in VkSurfacePresentScalingCapabilitiesEXT::supportedPresentScaling, given each present mode in VkSwapchainPresentModesCreateInfoEXT::pPresentModes in VkSurfacePresentModeEXT", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-VkSwapchainPresentScalingCreateInfoEXT-scalingBehavior-parameter", "scalingBehavior must be a valid combination of VkPresentScalingFlagBitsEXT values", "chapters/VK_KHR_surface/wsi.html"}, - {"VUID-VkSwapchainPresentScalingCreateInfoEXT-swapchainMaintenance1-10154", "If the swapchainMaintenance1 feature is not enabled, then presentScaling, presentGravityX, and presentGravityY must be 0", "chapters/VK_KHR_surface/wsi.html"}, + {"VUID-VkSwapchainPresentScalingCreateInfoEXT-swapchainMaintenance1-10154", "If the swapchainMaintenance1 feature is not enabled, then scalingBehavior, presentGravityX, and presentGravityY must be 0", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-VkSysmemColorSpaceFUCHSIA-colorSpace-06402", "colorSpace must be a ColorSpaceType as defined in fuchsia.sysmem/image_formats.fidl", "chapters/resources.html"}, {"VUID-VkSysmemColorSpaceFUCHSIA-pNext-pNext", "pNext must be NULL", "chapters/resources.html"}, {"VUID-VkSysmemColorSpaceFUCHSIA-sType-sType", "sType must be VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA", "chapters/resources.html"}, @@ -7606,13 +7619,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkWriteDescriptorSet-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 VkWriteDescriptorSetAccelerationStructureKHR, VkWriteDescriptorSetAccelerationStructureNV, or VkWriteDescriptorSetInlineUniformBlock", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSet-sType-sType", "sType must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSet-sType-unique", "The sType value of each struct in the pNext chain must be unique", "chapters/descriptorsets.html"}, - {"VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236", "accelerationStructureCount must be equal to descriptorCount in the extended structure", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength", "accelerationStructureCount must be greater than 0", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03579", "Each acceleration structure in pAccelerationStructures must have been created with a type of VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR or VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-03580", "If the nullDescriptor feature is not enabled, each element of pAccelerationStructures must not be VK_NULL_HANDLE", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter", "pAccelerationStructures must be a valid pointer to an array of accelerationStructureCount valid or VK_NULL_HANDLE VkAccelerationStructureKHR handles", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR", "chapters/descriptorsets.html"}, - {"VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-03747", "accelerationStructureCount must be equal to descriptorCount in the extended structure", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength", "accelerationStructureCount must be greater than 0", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03748", "Each acceleration structure in pAccelerationStructures must have been created with VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR", "chapters/descriptorsets.html"}, {"VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-03749", "If the nullDescriptor feature is not enabled, each member of pAccelerationStructures must not be VK_NULL_HANDLE", "chapters/descriptorsets.html"}, @@ -8231,13 +8242,9 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdBindShadersEXT-pShaders-08469", "For each element of pStages, if pShaders is not NULL, and the element of the pShaders array with the same index is not VK_NULL_HANDLE, it must have been created with a stage equal to the corresponding element of pStages", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pShaders-08470", "If pStages contains both VK_SHADER_STAGE_TASK_BIT_EXT and VK_SHADER_STAGE_VERTEX_BIT, and pShaders is not NULL, and the same index in pShaders as VK_SHADER_STAGE_TASK_BIT_EXT in pStages is not VK_NULL_HANDLE, the same index in pShaders as VK_SHADER_STAGE_VERTEX_BIT in pStages must be VK_NULL_HANDLE", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pShaders-08471", "If pStages contains both VK_SHADER_STAGE_MESH_BIT_EXT and VK_SHADER_STAGE_VERTEX_BIT, and pShaders is not NULL, and the same index in pShaders as VK_SHADER_STAGE_MESH_BIT_EXT in pStages is not VK_NULL_HANDLE, the same index in pShaders as VK_SHADER_STAGE_VERTEX_BIT in pStages must be VK_NULL_HANDLE", "chapters/shaders.html"}, - {"VUID-vkCmdBindShadersEXT-pShaders-08474", "If the tessellationShader feature is not enabled, and pStages contains VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT or VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, and pShaders is not NULL, the same index or indices in pShaders must be VK_NULL_HANDLE", "chapters/shaders.html"}, - {"VUID-vkCmdBindShadersEXT-pShaders-08475", "If the geometryShader feature is not enabled, and pStages contains VK_SHADER_STAGE_GEOMETRY_BIT, and pShaders is not NULL, the same index in pShaders must be VK_NULL_HANDLE", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pShaders-08476", "If pStages contains VK_SHADER_STAGE_COMPUTE_BIT, the VkCommandPool that commandBuffer was allocated from must support compute operations", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pShaders-08477", "If pStages contains VK_SHADER_STAGE_VERTEX_BIT, VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT, VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT, VK_SHADER_STAGE_GEOMETRY_BIT, or VK_SHADER_STAGE_FRAGMENT_BIT, the VkCommandPool that commandBuffer was allocated from must support graphics operations", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pShaders-08478", "If pStages contains VK_SHADER_STAGE_MESH_BIT_EXT or VK_SHADER_STAGE_TASK_BIT_EXT, the VkCommandPool that commandBuffer was allocated from must support graphics operations", "chapters/shaders.html"}, - {"VUID-vkCmdBindShadersEXT-pShaders-08490", "If the taskShader feature is not enabled, and pStages contains VK_SHADER_STAGE_TASK_BIT_EXT, and pShaders is not NULL, the same index in pShaders must be VK_NULL_HANDLE", "chapters/shaders.html"}, - {"VUID-vkCmdBindShadersEXT-pShaders-08491", "If the meshShader feature is not enabled, and pStages contains VK_SHADER_STAGE_MESH_BIT_EXT, and pShaders is not NULL, the same index in pShaders must be VK_NULL_HANDLE", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pShaders-parameter", "If pShaders is not NULL, pShaders must be a valid pointer to an array of stageCount valid or VK_NULL_HANDLE VkShaderEXT handles", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pStages-08463", "Every element of pStages must be unique", "chapters/shaders.html"}, {"VUID-vkCmdBindShadersEXT-pStages-08464", "pStages must not contain VK_SHADER_STAGE_ALL_GRAPHICS or VK_SHADER_STAGE_ALL", "chapters/shaders.html"}, @@ -8344,6 +8351,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"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"}, {"VUID-vkCmdBlitImage-filter-parameter", "filter must be a valid VkFilter value", "chapters/copies.html"}, + {"VUID-vkCmdBlitImage-maintenance8-10207", "If the maintenance8 feature is enabled and srcImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer must be 0, and srcSubresource.layerCount must be 1", "chapters/copies.html"}, + {"VUID-vkCmdBlitImage-maintenance8-10208", "If the maintenance8 feature is enabled and 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-vkCmdBlitImage-pRegions-00215", "The source region specified by each element of pRegions must be a region that is contained within srcImage", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-pRegions-00216", "The destination region specified by each element of pRegions must be a region that is contained within dstImage", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-pRegions-00217", "The union of all destination regions, specified by the elements of pRegions, must not overlap in memory with any texel that may be sampled during the blit operation", "chapters/copies.html"}, @@ -8357,7 +8366,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdBlitImage-srcImage-00231", "If either of srcImage or dstImage was created with a depth/stencil format, the other must have exactly the same format", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-srcImage-00232", "If srcImage was created with a depth/stencil format, filter must be VK_FILTER_NEAREST", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-srcImage-00233", "srcImage must have been created with a samples value of VK_SAMPLE_COUNT_1_BIT", "chapters/copies.html"}, - {"VUID-vkCmdBlitImage-srcImage-00240", "If either srcImage or dstImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0, and srcSubresource.layerCount and dstSubresource.layerCount must each be 1", "chapters/copies.html"}, + {"VUID-vkCmdBlitImage-srcImage-00240", "If the maintenance8 feature is not enabled and either srcImage or dstImage is of type VK_IMAGE_TYPE_3D, then for each element of pRegions, srcSubresource.baseArrayLayer and dstSubresource.baseArrayLayer must each be 0, and srcSubresource.layerCount and dstSubresource.layerCount must each be 1", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-srcImage-00245", "If srcImage is of type VK_IMAGE_TYPE_1D, then for each element of pRegions, srcOffsets[0].y must be 0 and srcOffsets[1].y must be 1", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-srcImage-00247", "If srcImage is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then for each element of pRegions, srcOffsets[0].z must be 0 and srcOffsets[1].z must be 1", "chapters/copies.html"}, {"VUID-vkCmdBlitImage-srcImage-01999", "The format features of srcImage must contain VK_FORMAT_FEATURE_BLIT_SRC_BIT", "chapters/copies.html"}, @@ -8818,6 +8827,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-commandBuffer-01825", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, srcImage must not be a protected image", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-commandBuffer-01826", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, dstImage must not be a protected image", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-commandBuffer-01827", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, dstImage must not be an unprotected image", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-commandBuffer-10217", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT, for each element of pRegions, where the aspectMask member of srcSubresource is VK_IMAGE_ASPECT_COLOR_BIT, the aspectMask of dstSubresource must not be VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-commandBuffer-10218", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT, for each element of pRegions, where the aspectMask member of dstSubresource is VK_IMAGE_ASPECT_COLOR_BIT then the aspectMask of srcSubresource must not be VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-commandBuffer-recording", "commandBuffer must be in the recording state", "chapters/copies.html"}, @@ -8845,6 +8856,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-dstOffset-01784", "The dstOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-dstSubresource-07967", "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-vkCmdCopyImage-dstSubresource-07968", "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-vkCmdCopyImage-dstSubresource-10215", "If dstSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then srSubresource.aspectMask must not contain both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT.", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-pRegions-00124", "The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-pRegions-07278", "For each element of pRegions, srcOffset.x must be a multiple of the texel block extent width of the VkFormat of srcImage", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-pRegions-07279", "For each element of pRegions, srcOffset.y must be a multiple of the texel block extent height of the VkFormat of srcImage", "chapters/copies.html"}, @@ -8858,7 +8870,7 @@ 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 then for each element of pRegions, srcSubresource.aspectMask and dstSubresource.aspectMask must match", "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-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"}, @@ -8887,10 +8899,17 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImage-srcOffset-01783", "The srcOffset and extent members of each element of pRegions must respect the image transfer granularity requirements of commandBuffer's command pool's queue family, as described in VkQueueFamilyProperties", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcSubresource-07967", "The srcSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when srcImage was created", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-srcSubresource-07968", "If srcSubresource.layerCount is not VK_REMAINING_ARRAY_LAYERS, srcSubresource.baseArrayLayer + srcSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when srcImage was created", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcSubresource-10209", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT, then maintenance8 must be enabled", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcSubresource-10210", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then maintenance8 must be enabled", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcSubresource-10211", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT, then the VkFormat values of srcImage and dstImage must be compatible according to the list of compatible depth-stencil and color formats", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcSubresource-10212", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT and dstSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then the VkFormat values of srcImage and dstImage must be compatible according to the list of compatible depth-stencil and color formats", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage-srcSubresource-10214", "If srcSubresource.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, then dstSubresource.aspectMask must not contain both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, {"VUID-vkCmdCopyImage-videocoding", "This command must only be called outside of a video coding scope", "chapters/copies.html"}, {"VUID-vkCmdCopyImage2-commandBuffer-01825", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, srcImage must not be a protected image", "chapters/copies.html"}, {"VUID-vkCmdCopyImage2-commandBuffer-01826", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, dstImage must not be a protected image", "chapters/copies.html"}, {"VUID-vkCmdCopyImage2-commandBuffer-01827", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, dstImage must not be an unprotected image", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage2-commandBuffer-10217", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT, for each element of pCopyImageInfo->pRegions, where the aspectMask member of srcSubresource is VK_IMAGE_ASPECT_COLOR_BIT, the aspectMask of dstSubresource must not be VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, + {"VUID-vkCmdCopyImage2-commandBuffer-10218", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT, for each element of pCopyImageInfo->pRegions, where the aspectMask member of dstSubresource is VK_IMAGE_ASPECT_COLOR_BIT then the aspectMask of srcSubresource must not be VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, {"VUID-vkCmdCopyImage2-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "chapters/copies.html"}, {"VUID-vkCmdCopyImage2-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "chapters/copies.html"}, {"VUID-vkCmdCopyImage2-commandBuffer-recording", "commandBuffer must be in the recording state", "chapters/copies.html"}, @@ -8904,6 +8923,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImageToBuffer-commandBuffer-01832", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, dstBuffer must not be a protected buffer", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-01833", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, dstBuffer must not be an unprotected buffer", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-07746", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT, the bufferOffset member of any element of pRegions must be a multiple of 4", "chapters/copies.html"}, + {"VUID-vkCmdCopyImageToBuffer-commandBuffer-10216", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT, for each element of pRegions, the aspectMask member of imageSubresource must not be VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-recording", "commandBuffer must be in the recording state", "chapters/copies.html"}, @@ -8959,6 +8979,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-01832", "If commandBuffer is an unprotected command buffer and protectedNoFault is not supported, dstBuffer must not be a protected buffer", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-01833", "If commandBuffer is a protected command buffer and protectedNoFault is not supported, dstBuffer must not be an unprotected buffer", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-07746", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT, the bufferOffset member of any element of pCopyImageToBufferInfo->pRegions must be a multiple of 4", "chapters/copies.html"}, + {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-10216", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT, for each element of pCopyImageToBufferInfo->pRegions, the aspectMask member of imageSubresource must not be VK_IMAGE_ASPECT_DEPTH_BIT or VK_IMAGE_ASPECT_STENCIL_BIT", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "chapters/copies.html"}, {"VUID-vkCmdCopyImageToBuffer2-commandBuffer-recording", "commandBuffer must be in the recording state", "chapters/copies.html"}, @@ -9116,7 +9137,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDecodeVideoKHR-dpbFrameUseCount-07176", "All elements of dpbFrameUseCount must be less than or equal to 1", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-dpbTopFieldUseCount-07177", "All elements of dpbTopFieldUseCount must be less than or equal to 1", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-filmGrainSupport-09248", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR and VkVideoDecodeAV1ProfileInfoKHR::filmGrainSupport set to VK_FALSE, then film grain must not be enabled for the decoded picture", "chapters/videocoding.html"}, - {"VUID-vkCmdDecodeVideoKHR-frameHeaderOffset-09251", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the frameHeaderOffset member of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than the minimum of pDecodeInfo->srcBufferRange", "chapters/videocoding.html"}, + {"VUID-vkCmdDecodeVideoKHR-frameHeaderOffset-09251", "If the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR, then the frameHeaderOffset member of the VkVideoDecodeAV1PictureInfoKHR structure included in the pNext chain of pDecodeInfo must be less than pDecodeInfo->srcBufferRange", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-opCount-07134", "For each active query, the active query index corresponding to the query type of that query plus opCount must be less than or equal to the last activatable query index corresponding to the query type of that query plus one", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07135", "pDecodeInfo->srcBuffer must be compatible with the video profile the bound video session was created with", "chapters/videocoding.html"}, {"VUID-vkCmdDecodeVideoKHR-pDecodeInfo-07138", "pDecodeInfo->srcBufferOffset must be an integer multiple of VkVideoCapabilitiesKHR::minBitstreamBufferOffsetAlignment, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the video profile the bound video session was created with", "chapters/videocoding.html"}, @@ -9220,7 +9241,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDispatch-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/dispatch.html"}, {"VUID-vkCmdDispatch-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, {"VUID-vkCmdDispatch-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, - {"VUID-vkCmdDispatch-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, + {"VUID-vkCmdDispatch-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, {"VUID-vkCmdDispatch-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/dispatch.html"}, {"VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/dispatch.html"}, {"VUID-vkCmdDispatch-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/dispatch.html"}, @@ -9299,7 +9320,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDispatchBase-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchBase-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchBase-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, - {"VUID-vkCmdDispatchBase-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, + {"VUID-vkCmdDispatchBase-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchBase-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchBase-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/dispatch.html"}, @@ -9383,7 +9404,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDispatchGraphAMDX-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphAMDX-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphAMDX-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/executiongraphs.html"}, - {"VUID-vkCmdDispatchGraphAMDX-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/executiongraphs.html"}, + {"VUID-vkCmdDispatchGraphAMDX-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphAMDX-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphAMDX-None-10195", "If the bound execution graph pipeline includes draw nodes, this command must be called within a render pass instance that is compatible with the graphics pipeline used to create each of those nodes", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphAMDX-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/executiongraphs.html"}, @@ -9472,7 +9493,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDispatchGraphIndirectAMDX-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectAMDX-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectAMDX-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/executiongraphs.html"}, - {"VUID-vkCmdDispatchGraphIndirectAMDX-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/executiongraphs.html"}, + {"VUID-vkCmdDispatchGraphIndirectAMDX-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectAMDX-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectAMDX-None-10195", "If the bound execution graph pipeline includes draw nodes, this command must be called within a render pass instance that is compatible with the graphics pipeline used to create each of those nodes", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectAMDX-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/executiongraphs.html"}, @@ -9565,7 +9586,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/executiongraphs.html"}, - {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/executiongraphs.html"}, + {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectCountAMDX-None-10195", "If the bound execution graph pipeline includes draw nodes, this command must be called within a render pass instance that is compatible with the graphics pipeline used to create each of those nodes", "chapters/executiongraphs.html"}, {"VUID-vkCmdDispatchGraphIndirectCountAMDX-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/executiongraphs.html"}, @@ -9659,7 +9680,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDispatchIndirect-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchIndirect-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchIndirect-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, - {"VUID-vkCmdDispatchIndirect-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, + {"VUID-vkCmdDispatchIndirect-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchIndirect-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/dispatch.html"}, {"VUID-vkCmdDispatchIndirect-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/dispatch.html"}, @@ -9771,7 +9792,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -9867,7 +9888,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-None-09462", "If shader objects are used for drawing or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any member of the pVertexBindingDescriptions parameter to the vkCmdSetVertexInputEXT call that sets this dynamic state has a value other than 1 in divisor, and VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance is VK_FALSE, then firstInstance must be 0", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDraw-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -9940,7 +9961,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDraw-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDraw-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDraw-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDraw-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDraw-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -9988,7 +10009,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDraw-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDraw-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDraw-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDraw-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDraw-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDraw-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDraw-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDraw-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -10088,7 +10109,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07819", "The pipelineStatistics member used to create any active Pipeline Statistics Query must not contain VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT, or VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10177,7 +10198,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterHUAWEI-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterHUAWEI-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10290,7 +10311,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterHUAWEI-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -10390,7 +10411,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10478,7 +10499,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10593,7 +10614,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawClusterIndirectHUAWEI-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -10700,7 +10721,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -10796,7 +10817,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-None-09462", "If shader objects are used for drawing or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any member of the pVertexBindingDescriptions parameter to the vkCmdSetVertexInputEXT call that sets this dynamic state has a value other than 1 in divisor, and VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance is VK_FALSE, then firstInstance must be 0", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -10869,7 +10890,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -10917,7 +10938,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexed-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -11025,7 +11046,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11120,7 +11141,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -11200,7 +11221,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -11248,7 +11269,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirect-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -11356,7 +11377,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11451,7 +11472,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -11532,7 +11553,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -11581,7 +11602,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndexedIndirectCount-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -11688,7 +11709,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -11783,7 +11804,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -11863,7 +11884,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -11911,7 +11932,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirect-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirect-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -12017,7 +12038,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12113,7 +12134,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-None-09462", "If shader objects are used for drawing or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any member of the pVertexBindingDescriptions parameter to the vkCmdSetVertexInputEXT call that sets this dynamic state has a value other than 1 in divisor, and VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance is VK_FALSE, then firstInstance must be 0", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -12190,7 +12211,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -12238,7 +12259,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectByteCountEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -12349,7 +12370,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12444,7 +12465,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -12525,7 +12546,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -12574,7 +12595,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndirectCount-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawIndirectCount-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -12675,7 +12696,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12763,7 +12784,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -12881,7 +12902,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -12982,7 +13003,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13070,7 +13091,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13193,7 +13214,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -13295,7 +13316,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13383,7 +13404,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13506,7 +13527,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectCountNV-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -13607,7 +13628,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13695,7 +13716,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -13816,7 +13837,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -13916,7 +13937,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14004,7 +14025,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14125,7 +14146,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksIndirectNV-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -14225,7 +14246,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksNV-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksNV-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14313,7 +14334,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14423,7 +14444,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMeshTasksNV-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -14531,7 +14552,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14627,7 +14648,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-None-09462", "If shader objects are used for drawing or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any member of the pVertexBindingDescriptions parameter to the vkCmdSetVertexInputEXT call that sets this dynamic state has a value other than 1 in divisor, and VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance is VK_FALSE, then firstInstance must be 0", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -14703,7 +14724,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -14751,7 +14772,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -14859,7 +14880,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, @@ -14955,7 +14976,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-None-09462", "If shader objects are used for drawing or the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VERTEX_INPUT_EXT dynamic state enabled, any member of the pVertexBindingDescriptions parameter to the vkCmdSetVertexInputEXT call that sets this dynamic state has a value other than 1 in divisor, and VkPhysicalDeviceVertexAttributeDivisorProperties::supportsNonZeroFirstInstance is VK_FALSE, then firstInstance must be 0", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/drawing.html"}, @@ -15031,7 +15052,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/drawing.html"}, @@ -15080,7 +15101,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/drawing.html"}, - {"VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, + {"VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/drawing.html"}, {"VUID-vkCmdDrawMultiIndexedEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/drawing.html"}, @@ -15365,7 +15386,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteCommands-flags-06026", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering, the flags member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext chain of VkCommandBufferBeginInfo::pInheritanceInfo used to begin recording each element of pCommandBuffers must be equal to the VkRenderingInfo::flags parameter to vkCmdBeginRendering, excluding VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT", "chapters/cmdbuffers.html"}, {"VUID-vkCmdExecuteCommands-imageView-06028", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering, if the imageView member of an element of the VkRenderingInfo::pColorAttachments parameter to vkCmdBeginRendering is not VK_NULL_HANDLE, the corresponding element of the pColorAttachmentFormats member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext chain of VkCommandBufferBeginInfo::pInheritanceInfo used to begin recording each element of pCommandBuffers must be equal to the format used to create that image view", "chapters/cmdbuffers.html"}, {"VUID-vkCmdExecuteCommands-imageView-07606", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRendering, if the imageView member of an element of the VkRenderingInfo::pColorAttachments parameter to vkCmdBeginRendering is VK_NULL_HANDLE, the corresponding element of the pColorAttachmentFormats member of the VkCommandBufferInheritanceRenderingInfo structure included in the pNext chain of VkCommandBufferBeginInfo::pInheritanceInfo used to begin recording each element of pCommandBuffers must be VK_FORMAT_UNDEFINED", "chapters/cmdbuffers.html"}, - {"VUID-vkCmdExecuteCommands-nestedCommandBuffer-09376", "If the nestedCommandBuffer feature is enabled, the command buffer nesting level of each element of pCommandBuffers must be less than maxCommandBufferNestingLevel", "chapters/cmdbuffers.html"}, + {"VUID-vkCmdExecuteCommands-nestedCommandBuffer-09376", "If the nestedCommandBuffer feature is enabled, and commandBuffer is a secondary command buffer, the command buffer nesting level of each element of pCommandBuffers must be less than maxCommandBufferNestingLevel", "chapters/cmdbuffers.html"}, {"VUID-vkCmdExecuteCommands-nestedCommandBufferRendering-09377", "If the nestedCommandBufferRendering feature is not enabled, and commandBuffer is a secondary command buffer, commandBuffer must not have been recorded with VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT", "chapters/cmdbuffers.html"}, {"VUID-vkCmdExecuteCommands-nestedCommandBufferSimultaneousUse-09378", "If the nestedCommandBufferSimultaneousUse feature is not enabled, and commandBuffer is a secondary command buffer, each element of pCommandBuffers must not have been recorded with VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT", "chapters/cmdbuffers.html"}, {"VUID-vkCmdExecuteCommands-pBeginInfo-06020", "If vkCmdExecuteCommands is being called within a render pass instance begun with vkCmdBeginRenderPass, the render passes specified in the pBeginInfo->pInheritanceInfo->renderPass members of the vkBeginCommandBuffer commands used to begin recording each element of pCommandBuffers must be compatible with the current render pass", "chapters/cmdbuffers.html"}, @@ -15454,7 +15475,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV 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-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport 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-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor 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-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15542,7 +15563,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-None-09650", "If the depthClampControl 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_CLAMP_RANGE_EXT dynamic state enabled, and the current value of depthClampEnable is VK_TRUE, then vkCmdSetDepthClampRangeEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15674,7 +15695,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT 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-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT 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-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsEXT-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15781,7 +15802,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07649", "If the coverageReductionMode 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_COVERAGE_REDUCTION_MODE_NV dynamic state enabled, and the current value of rasterizerDiscardEnable is VK_FALSE, then vkCmdSetCoverageReductionModeNV 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-07748", "If any shader statically accesses an input attachment, a valid descriptor must be bound to the pipeline via a descriptor set", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07749", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT dynamic state enabled then vkCmdSetColorWriteEnableEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07751", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07751", "If the VK_EXT_discard_rectangles extension is enabled, a graphics pipeline is bound which was created with the VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo included a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPipelineDiscardRectangleStateCreateInfoEXT::discardRectangleCount", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-07831", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_VIEWPORT dynamic state enabled then vkCmdSetViewport 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-07832", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_SCISSOR dynamic state enabled then vkCmdSetScissor 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-07833", "If the bound graphics pipeline state was created with the VK_DYNAMIC_STATE_LINE_WIDTH dynamic state enabled then vkCmdSetLineWidth must have been called and not subsequently invalidated in the current command buffer prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15876,7 +15897,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09369", "If the current render pass instance was begun with vkCmdBeginRendering, there is no shader object bound to any graphics stage, and the bound graphics pipeline was created with a non-zero VkExternalFormatANDROID::externalFormat value and with the VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR dynamic state enabled, then vkCmdSetFragmentShadingRateKHR must have set pFragmentSize->height to 1 prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09548", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, the value of each element of VkRenderingAttachmentLocationInfo::pColorAttachmentLocations set by vkCmdSetRenderingAttachmentLocations must match the value set for the corresponding element in the bound pipeline", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09549", "If the current render pass was begun with vkCmdBeginRendering, and there is no shader object bound to any graphics stage, input attachment index mappings in the bound pipeline must match those set for the current render pass instance via VkRenderingInputAttachmentIndexInfo", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09637", "If the primitiveTopologyListRestart feature is not enabled, the topology is VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, or VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, 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 be VK_FALSE", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09642", "If the current render pass was begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag, the bound graphics pipeline must have been created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-None-09643", "If the bound graphics pipeline was created with VK_PIPELINE_CREATE_2_ENABLE_LEGACY_DITHERING_BIT_EXT, the current render pass must have begun with vkCmdBeginRendering with the VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT flag", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15948,7 +15969,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-format-08936", "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_VERTEX_INPUT_EXT dynamic state enabled and VkVertexInputAttributeDescription2EXT::format has a 64-bit component, then the scalar width associated with all Input variables of the corresponding Location in the Vertex Execution Model OpEntryPoint must be 64-bit", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-format-08937", "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_VERTEX_INPUT_EXT dynamic state enabled and the scalar width associated with a Location decorated Input variable in the Vertex Execution Model OpEntryPoint is 64-bit, then the corresponding VkVertexInputAttributeDescription2EXT::format must have a 64-bit component", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-format-10389", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is a packed format, and legacyVertexAttributes is not enabled, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the format", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the size of the components of the format", "chapters/device_generated_commands/generatedcommands.html"}, + {"VUID-vkCmdExecuteGeneratedCommandsNV-format-10390", "For each vertex attribute accessed by this command, if its VkVertexInputAttributeDescription::format or VkVertexInputAttributeDescription2EXT::format is not a packed format, and either legacyVertexAttributes is not enabled or format has 64-bit components, the value of attribAddress, calculated as described in Vertex Input Calculation, must be a multiple of the component size of the format", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06172", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the depth attachment", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06173", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pStencilAttachment is not VK_NULL_HANDLE, and the layout member of pStencilAttachment is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, this command must not write any values to the stencil attachment", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-imageView-06174", "If the current render pass instance was begun with vkCmdBeginRendering, the imageView member of pDepthAttachment is not VK_NULL_HANDLE, and the layout member of pDepthAttachment is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, this command must not write any values to the depth attachment", "chapters/device_generated_commands/generatedcommands.html"}, @@ -15998,7 +16019,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07489", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if current subpass has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled in the bound pipeline, then the current rasterizationSamples must be the same as the sample count of the depth/stencil attachment", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-07494", "If the VK_NV_framebuffer_mixed_samples extension is enabled, and if the current subpass has any color attachments and rasterizationSamples of the last call to vkCmdSetRasterizationSamplesEXT is greater than the number of color samples, then the pipeline sampleShadingEnable must be VK_FALSE", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizationSamples-09367", "If there is a shader object bound to any graphics stage, and the current render pass includes a color attachment that uses the VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID resolve mode, then vkCmdSetRasterizationSamplesEXT must have set rasterizationSamples to VK_SAMPLE_COUNT_1_BIT prior to this drawing command", "chapters/device_generated_commands/generatedcommands.html"}, - {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, and a shader object is bound to any graphics stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, and the most recent call to vkCmdSetDiscardRectangleEnableEXT in the current command buffer set discardRectangleEnable to VK_TRUE, then vkCmdSetDiscardRectangleEXT 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-rasterizerDiscardEnable-09236", "If the VK_EXT_discard_rectangles extension is enabled, a shader object is bound to any graphics stage or a graphics pipeline is bound which was created with VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT dynamic state enabled and the pNext chain of VkGraphicsPipelineCreateInfo did not include a VkPipelineDiscardRectangleStateCreateInfoEXT structure, the current value of rasterizerDiscardEnable is VK_FALSE, and the current value of discardRectangleEnable is VK_TRUE, then vkCmdSetDiscardRectangleEXT must have been called and not subsequently invalidated in the current command buffer prior to this drawing command for each discard rectangle in VkPhysicalDeviceDiscardRectanglePropertiesEXT::maxDiscardRectangles", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09416", "If the VK_EXT_blend_operation_advanced extension is enabled, and a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then at least one of vkCmdSetColorBlendEquationEXT and vkCmdSetColorBlendAdvancedEXT 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-rasterizerDiscardEnable-09417", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE, then vkCmdSetColorBlendEnableEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEnableEXT calls must specify an enable for all active color attachments in the current subpass", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdExecuteGeneratedCommandsNV-rasterizerDiscardEnable-09418", "If a shader object is bound to the VK_SHADER_STAGE_FRAGMENT_BIT stage, and both the most recent call to vkCmdSetRasterizerDiscardEnable in the current command buffer set rasterizerDiscardEnable to VK_FALSE and there are color attachments bound, then vkCmdSetColorBlendEquationEXT must have been called in the current command buffer prior to this drawing command, and the attachments specified by the firstAttachment and attachmentCount parameters of vkCmdSetColorBlendEquationEXT calls must specify the blend equations for all active color attachments in the current subpass where blending is enabled", "chapters/device_generated_commands/generatedcommands.html"}, @@ -16138,6 +16159,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdPipelineBarrier-image-09373", "If vkCmdPipelineBarrier is called within a render pass instance using a VkRenderPass object, and the image member of any image memory barrier is a color resolve attachment, the corresponding color attachment must be VK_ATTACHMENT_UNUSED", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier-image-09374", "If vkCmdPipelineBarrier is called within a render pass instance using a VkRenderPass object, and the image member of any image memory barrier is a color resolve attachment, it must have been created with a non-zero VkExternalFormatANDROID::externalFormat value", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier-image-09555", "If vkCmdPipelineBarrier is called within a render pass instance started with vkCmdBeginRendering, and the image member of any image memory barrier is used as an attachment in the current render pass instance, it must be in the VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ or VK_IMAGE_LAYOUT_GENERAL layout", "chapters/synchronization.html"}, + {"VUID-vkCmdPipelineBarrier-maintenance8-10206", "If the maintenance8 feature is not enabled, dependencyFlags must not include VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier-oldLayout-01181", "If vkCmdPipelineBarrier is called within a render pass instance, the oldLayout and newLayout members of any image memory barrier included in this command must be equal", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817", "For any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818", "For any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "chapters/synchronization.html"}, @@ -16179,7 +16201,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdPipelineBarrier2-dependencyFlags-01186", "If vkCmdPipelineBarrier2 is called outside of a render pass instance, the dependency flags must not include VK_DEPENDENCY_VIEW_LOCAL_BIT", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-dependencyFlags-07891", "If vkCmdPipelineBarrier2 is called within a render pass instance, and the source stage masks of any memory barriers include framebuffer-space stages, then dependencyFlags must include VK_DEPENDENCY_BY_REGION_BIT", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-dstStageMask-09674", "The dstStageMask member of any element of the pMemoryBarriers member of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, - {"VUID-vkCmdPipelineBarrier2-dstStageMask-09676", "If a buffer or image memory barrier does not specify an release operation, the respective dstStageMask member of the element of the pBufferMemoryBarriers or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, + {"VUID-vkCmdPipelineBarrier2-dstStageMask-09676", "If a buffer or image memory barrier does not specify an release operation, or if it does but pDependencyInfo->dependencyFlags includes VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR, the respective dstStageMask member of the element of the pBufferMemoryBarriers or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-image-04073", "If vkCmdPipelineBarrier2 is called within a render pass instance using a VkRenderPass object, the image member of any image memory barrier included in this command must be an attachment used in the current subpass both as an input attachment, and as either a color, color resolve, or depth/stencil attachment", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-image-09373", "If vkCmdPipelineBarrier2 is called within a render pass instance using a VkRenderPass object, and the image member of any image memory barrier is a color resolve attachment, the corresponding color attachment must be VK_ATTACHMENT_UNUSED", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-image-09374", "If vkCmdPipelineBarrier2 is called within a render pass instance using a VkRenderPass object, and the image member of any image memory barrier is a color resolve attachment, it must have been created with a non-zero VkExternalFormatANDROID::externalFormat value", "chapters/synchronization.html"}, @@ -16190,7 +16212,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdPipelineBarrier2-srcQueueFamilyIndex-10387", "If a buffer or image memory barrier specifies a queue family ownership transfer operation, either the srcQueueFamilyIndex or dstQueueFamilyIndex member of the element of the pBufferMemoryBarriers or pImageMemoryBarriers members of pDependencyInfo and the queue family index that was used to create the command pool that commandBuffer was allocated from must be equal", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-srcStageMask-09556", "If vkCmdPipelineBarrier2 is called within a render pass instance started with vkCmdBeginRendering, this command must only specify framebuffer-space stages in srcStageMask and dstStageMask", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-srcStageMask-09673", "The srcStageMask member of any element of the pMemoryBarriers member of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, - {"VUID-vkCmdPipelineBarrier2-srcStageMask-09675", "If a buffer or image memory barrier does not specify an acquire operation, the respective srcStageMask member of the element of the pBufferMemoryBarriers or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, + {"VUID-vkCmdPipelineBarrier2-srcStageMask-09675", "If a buffer or image memory barrier does not specify an acquire operation, or if it does but pDependencyInfo->dependencyFlags includes VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR, the respective srcStageMask member of the element of the pBufferMemoryBarriers or pImageMemoryBarriers members of pDependencyInfo must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, {"VUID-vkCmdPipelineBarrier2-synchronization2-03848", "The synchronization2 feature must be enabled", "chapters/synchronization.html"}, {"VUID-vkCmdPreprocessGeneratedCommandsEXT-bufferlevel", "commandBuffer must be a primary VkCommandBuffer", "chapters/device_generated_commands/generatedcommands.html"}, {"VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-11081", "commandBuffer must not be a protected command buffer", "chapters/device_generated_commands/generatedcommands.html"}, @@ -17038,7 +17060,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdSubpassShadingHUAWEI-None-08611", "If a VkSampler created with unnormalizedCoordinates equal to VK_TRUE is used to sample a VkImageView as a result of this command, then the sampler must not be used with any of the SPIR-V OpImageSample* or OpImageSparseSample* instructions that includes a LOD bias or any offset values", "chapters/dispatch.html"}, {"VUID-vkCmdSubpassShadingHUAWEI-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, {"VUID-vkCmdSubpassShadingHUAWEI-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/dispatch.html"}, - {"VUID-vkCmdSubpassShadingHUAWEI-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, + {"VUID-vkCmdSubpassShadingHUAWEI-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/dispatch.html"}, {"VUID-vkCmdSubpassShadingHUAWEI-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/dispatch.html"}, {"VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/dispatch.html"}, {"VUID-vkCmdSubpassShadingHUAWEI-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/dispatch.html"}, @@ -17113,7 +17135,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdTraceRaysIndirect2KHR-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirect2KHR-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirect2KHR-None-09458", "If the bound ray tracing pipeline state was created with the VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR dynamic state enabled then vkCmdSetRayTracingPipelineStackSizeKHR must have been called in the current command buffer prior to this trace command", "chapters/raytracing.html"}, - {"VUID-vkCmdTraceRaysIndirect2KHR-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, + {"VUID-vkCmdTraceRaysIndirect2KHR-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirect2KHR-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirect2KHR-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/raytracing.html"}, @@ -17196,7 +17218,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdTraceRaysIndirectKHR-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirectKHR-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirectKHR-None-09458", "If the bound ray tracing pipeline state was created with the VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR dynamic state enabled then vkCmdSetRayTracingPipelineStackSizeKHR must have been called in the current command buffer prior to this trace command", "chapters/raytracing.html"}, - {"VUID-vkCmdTraceRaysIndirectKHR-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, + {"VUID-vkCmdTraceRaysIndirectKHR-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirectKHR-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysIndirectKHR-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/raytracing.html"}, @@ -17310,7 +17332,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdTraceRaysKHR-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysKHR-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysKHR-None-09458", "If the bound ray tracing pipeline state was created with the VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR dynamic state enabled then vkCmdSetRayTracingPipelineStackSizeKHR must have been called in the current command buffer prior to this trace command", "chapters/raytracing.html"}, - {"VUID-vkCmdTraceRaysKHR-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, + {"VUID-vkCmdTraceRaysKHR-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysKHR-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysKHR-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/raytracing.html"}, @@ -17422,7 +17444,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdTraceRaysNV-None-08612", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a uniform buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysNV-None-08613", "If the robustBufferAccess feature is not enabled, and any VkShaderEXT bound to a stage corresponding to the pipeline bind point used by this command accesses a storage buffer, it must not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysNV-None-09458", "If the bound ray tracing pipeline state was created with the VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR dynamic state enabled then vkCmdSetRayTracingPipelineStackSizeKHR must have been called in the current command buffer prior to this trace command", "chapters/raytracing.html"}, - {"VUID-vkCmdTraceRaysNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, the image subresource identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, + {"VUID-vkCmdTraceRaysNV-None-09600", "If a descriptor with type equal to any of VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, or VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT is accessed as a result of this command, all image subresources identified by that descriptor must be in the image layout identified when the descriptor was written", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysNV-None-10068", "For each array of resources that is used by a bound shader, the indices used to access members of the array must be less than the descriptor count for the identified binding in the descriptor sets used by this command", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06975", "If OpImageBlockMatchSADQCOM is used to read from an VkImageView as a result of this command, then the image view's format features must contain VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM", "chapters/raytracing.html"}, {"VUID-vkCmdTraceRaysNV-OpImageBlockMatchSADQCOM-06976", "If OpImageBlockMatchSADQCOM or OpImageBlockMatchSSDQCOM is used to read from a reference image as result of this command, then the specified reference coordinates must not fail integer texel coordinate validation", "chapters/raytracing.html"}, @@ -17580,8 +17602,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdWaitEvents2-commandBuffer-recording", "commandBuffer must be in the recording state", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-commonparent", "Both of commandBuffer, and the elements of pEvents must have been created, allocated, or retrieved from the same VkDevice", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-dependencyFlags-03844", "If vkCmdWaitEvents2 is being called inside a render pass instance, the srcStageMask member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfos must not include VK_PIPELINE_STAGE_2_HOST_BIT", "chapters/synchronization.html"}, + {"VUID-vkCmdWaitEvents2-dependencyFlags-10394", "The dependencyFlags member of any element of pDependencyInfo must be 0", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-dstStageMask-03843", "The dstStageMask member of any element of the pMemoryBarriers, pBufferMemoryBarriers, or pImageMemoryBarriers members of pDependencyInfos must only include pipeline stages valid for the queue family that was used to create the command pool that commandBuffer was allocated from", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-eventCount-arraylength", "eventCount must be greater than 0", "chapters/synchronization.html"}, + {"VUID-vkCmdWaitEvents2-maintenance8-10205", "If the maintenance8 feature is not enabled, The dependencyFlags members of any element of pDependencyInfos must not include VK_DEPENDENCY_QUEUE_FAMILY_OWNERSHIP_TRANSFER_USE_ALL_STAGES_BIT_KHR", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-pDependencyInfos-parameter", "pDependencyInfos must be a valid pointer to an array of eventCount valid VkDependencyInfo structures", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-pEvents-03837", "Members of pEvents must not have been signaled by vkCmdSetEvent", "chapters/synchronization.html"}, {"VUID-vkCmdWaitEvents2-pEvents-03838", "For any element i of pEvents, if that event is signaled by vkCmdSetEvent2, that command's dependencyInfo parameter must be exactly equal to the ith element of pDependencyInfos", "chapters/synchronization.html"}, @@ -18618,11 +18642,11 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-08073", "pData must point to a buffer that is at least VkPhysicalDeviceDescriptorBufferPropertiesEXT::bufferCaptureReplayDescriptorDataSize bytes in size", "chapters/descriptorsets.html"}, {"VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pData-parameter", "pData must be a pointer value", "chapters/descriptorsets.html"}, {"VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-pInfo-parameter", "pInfo must be a valid pointer to a valid VkBufferCaptureDescriptorDataInfoEXT structure", "chapters/descriptorsets.html"}, - {"VUID-vkGetCalibratedTimestampsEXT-timeDomain-09246", "The timeDomain value of each VkCalibratedTimestampInfoKHR in pTimestampInfos must be unique", "chapters/synchronization.html"}, {"VUID-vkGetCalibratedTimestampsKHR-device-parameter", "device must be a valid VkDevice handle", "chapters/synchronization.html"}, {"VUID-vkGetCalibratedTimestampsKHR-pMaxDeviation-parameter", "pMaxDeviation must be a valid pointer to a uint64_t value", "chapters/synchronization.html"}, {"VUID-vkGetCalibratedTimestampsKHR-pTimestampInfos-parameter", "pTimestampInfos must be a valid pointer to an array of timestampCount valid VkCalibratedTimestampInfoKHR structures", "chapters/synchronization.html"}, {"VUID-vkGetCalibratedTimestampsKHR-pTimestamps-parameter", "pTimestamps must be a valid pointer to an array of timestampCount uint64_t values", "chapters/synchronization.html"}, + {"VUID-vkGetCalibratedTimestampsKHR-timeDomain-09246", "The timeDomain value of each VkCalibratedTimestampInfoKHR in pTimestampInfos must be unique", "chapters/synchronization.html"}, {"VUID-vkGetCalibratedTimestampsKHR-timestampCount-arraylength", "timestampCount must be greater than 0", "chapters/synchronization.html"}, {"VUID-vkGetCudaModuleCacheNV-device-parameter", "device must be a valid VkDevice handle", "chapters/shaders.html"}, {"VUID-vkGetCudaModuleCacheNV-module-parameter", "module must be a valid VkCudaModuleNV handle", "chapters/shaders.html"}, @@ -19040,7 +19064,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter", "If the value referenced by pRectCount is not 0, and pRects is not NULL, pRects must be a valid pointer to an array of pRectCount VkRect2D structures", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter", "physicalDevice must be a valid VkPhysicalDevice handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06211", "surface must be supported by physicalDevice, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism", "chapters/VK_KHR_surface/wsi.html"}, - {"VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-06523", "surface must be a valid VkSurfaceKHR handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter", "surface must be a valid VkSurfaceKHR handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceProperties-pProperties-parameter", "pProperties must be a valid pointer to a VkPhysicalDeviceProperties structure", "chapters/devsandqueues.html"}, {"VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter", "physicalDevice must be a valid VkPhysicalDevice handle", "chapters/devsandqueues.html"}, @@ -19079,7 +19102,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter", "pSurfaceCapabilities must be a valid pointer to a VkSurfaceCapabilities2EXT structure", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter", "physicalDevice must be a valid VkPhysicalDevice handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06211", "surface must be supported by physicalDevice, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism", "chapters/VK_KHR_surface/wsi.html"}, - {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-06523", "surface must be a valid VkSurfaceKHR handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter", "surface must be a valid VkSurfaceKHR handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671", "If a VkSurfaceCapabilitiesFullScreenExclusiveEXT structure is included in the pNext chain of pSurfaceCapabilities, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the pNext chain of pSurfaceInfo", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-07776", "If a VkSurfacePresentModeCompatibilityEXT structure is included in the pNext chain of pSurfaceCapabilities, a VkSurfacePresentModeEXT structure must be included in the pNext chain of pSurfaceInfo", "chapters/VK_KHR_surface/wsi.html"}, @@ -19095,7 +19117,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter", "pSurfaceCapabilities must be a valid pointer to a VkSurfaceCapabilitiesKHR structure", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter", "physicalDevice must be a valid VkPhysicalDevice handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06211", "surface must be supported by physicalDevice, as reported by vkGetPhysicalDeviceSurfaceSupportKHR or an equivalent platform-specific mechanism", "chapters/VK_KHR_surface/wsi.html"}, - {"VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-06523", "surface must be a valid VkSurfaceKHR handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter", "surface must be a valid VkSurfaceKHR handle", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter", "pSurfaceFormatCount must be a valid pointer to a uint32_t value", "chapters/VK_KHR_surface/wsi.html"}, {"VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter", "If the value referenced by pSurfaceFormatCount is not 0, and pSurfaceFormats is not NULL, pSurfaceFormats must be a valid pointer to an array of pSurfaceFormatCount VkSurfaceFormat2KHR structures", "chapters/VK_KHR_surface/wsi.html"}, @@ -19403,6 +19424,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkMapMemory2-ppData-parameter", "ppData must be a valid pointer to a pointer value", "chapters/memory.html"}, {"VUID-vkMergePipelineCaches-device-parameter", "device must be a valid VkDevice handle", "chapters/pipelines.html"}, {"VUID-vkMergePipelineCaches-dstCache-00770", "dstCache must not appear in the list of source caches", "chapters/pipelines.html"}, + {"VUID-vkMergePipelineCaches-dstCache-10202", "Host access to dstCache must be externally synchronized if it was not created with VK_PIPELINE_CACHE_CREATE_INTERNALLY_SYNCHRONIZED_MERGE_BIT_KHR", "chapters/pipelines.html"}, {"VUID-vkMergePipelineCaches-dstCache-parameter", "dstCache must be a valid VkPipelineCache handle", "chapters/pipelines.html"}, {"VUID-vkMergePipelineCaches-dstCache-parent", "dstCache must have been created, allocated, or retrieved from device", "chapters/pipelines.html"}, {"VUID-vkMergePipelineCaches-pSrcCaches-parameter", "pSrcCaches must be a valid pointer to an array of srcCacheCount valid VkPipelineCache handles", "chapters/pipelines.html"}, @@ -19482,7 +19504,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkQueueSubmit2-queue-parameter", "queue must be a valid VkQueue handle", "chapters/cmdbuffers.html"}, {"VUID-vkQueueSubmit2-semaphore-03868", "The semaphore member of any binary semaphore element of the pSignalSemaphoreInfos member of any element of pSubmits must be unsignaled when the semaphore signal operation it defines is executed on the device", "chapters/cmdbuffers.html"}, {"VUID-vkQueueSubmit2-semaphore-03871", "When a semaphore wait operation for a binary semaphore is executed, as defined by the semaphore member of any element of the pWaitSemaphoreInfos member of any element of pSubmits, there must be no other queues waiting on the same semaphore", "chapters/cmdbuffers.html"}, - {"VUID-vkQueueSubmit2-semaphore-03873", "The semaphore member of any element of the pWaitSemaphoreInfos member of any element of pSubmits that was created with a VkSemaphoreTypeKHR of VK_SEMAPHORE_TYPE_BINARY_KHR must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends must have also been submitted for execution", "chapters/cmdbuffers.html"}, + {"VUID-vkQueueSubmit2-semaphore-03873", "The semaphore member of any element of the pWaitSemaphoreInfos member of any element of pSubmits that was created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY must reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends must have also been submitted for execution", "chapters/cmdbuffers.html"}, {"VUID-vkQueueSubmit2-stageMask-03869", "The stageMask member of any element of the pSignalSemaphoreInfos member of any element of pSubmits must only include pipeline stages that are supported by the queue family which queue belongs to", "chapters/cmdbuffers.html"}, {"VUID-vkQueueSubmit2-stageMask-03870", "The stageMask member of any element of the pWaitSemaphoreInfos member of any element of pSubmits must only include pipeline stages that are supported by the queue family which queue belongs to", "chapters/cmdbuffers.html"}, {"VUID-vkQueueSubmit2-synchronization2-03866", "The synchronization2 feature must be enabled", "chapters/cmdbuffers.html"}, diff --git a/scripts/generate_spec_error_message.py b/scripts/generate_spec_error_message.py index 8980aa0e93a..db0f135f5fc 100644 --- a/scripts/generate_spec_error_message.py +++ b/scripts/generate_spec_error_message.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -# 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) 2023-2024 RasterGrid Kft. +# 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. +# Copyright (c) 2023-2025 RasterGrid Kft. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -175,8 +175,8 @@ def GenerateSpecErrorMessage(api : str, valid_usage_json : str, out_file : str): /*************************************************************************** * - * Copyright (c) 2016-2024 Google Inc. - * Copyright (c) 2016-2024 LunarG, Inc. + * Copyright (c) 2016-2025 Google Inc. + * Copyright (c) 2016-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/best_practices_generator.py b/scripts/generators/best_practices_generator.py index 0812e50586c..3aec623990d 100644 --- a/scripts/generators/best_practices_generator.py +++ b/scripts/generators/best_practices_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. @@ -82,9 +82,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/device_features_generator.py b/scripts/generators/device_features_generator.py index 0ca050abdbe..3bbca8225b7 100644 --- a/scripts/generators/device_features_generator.py +++ b/scripts/generators/device_features_generator.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2023-2024 The Khronos Group Inc. +# Copyright (c) 2023-2025 The Khronos Group Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,8 +42,8 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2023-2024 Google Inc. - * Copyright (c) 2023-2024 LunarG, Inc. + * Copyright (c) 2023-2025 Google Inc. + * Copyright (c) 2023-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/enum_flag_bits_generator.py b/scripts/generators/enum_flag_bits_generator.py index 73217250d6b..cda57541239 100644 --- a/scripts/generators/enum_flag_bits_generator.py +++ b/scripts/generators/enum_flag_bits_generator.py @@ -1,10 +1,10 @@ #!/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) 2023-2024 RasterGrid Kft. +# 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. +# Copyright (c) 2023-2025 RasterGrid Kft. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -70,9 +70,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/error_location_helper_generator.py b/scripts/generators/error_location_helper_generator.py index 12adb604a70..c5634cb63e3 100644 --- a/scripts/generators/error_location_helper_generator.py +++ b/scripts/generators/error_location_helper_generator.py @@ -1,7 +1,7 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2023-2024 The Khronos Group Inc. -# Copyright (c) 2023-2024 Valve Corporation +# Copyright (c) 2023-2025 The Khronos Group Inc. +# Copyright (c) 2023-2025 Valve Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,8 +31,8 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2023-2024 The Khronos Group Inc. - * Copyright (c) 2023-2024 Valve Corporation + * Copyright (c) 2023-2025 The Khronos Group Inc. + * Copyright (c) 2023-2025 Valve Corporation * * 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/extension_helper_generator.py b/scripts/generators/extension_helper_generator.py index 96eaa31fa7c..e1a8a0d1270 100644 --- a/scripts/generators/extension_helper_generator.py +++ b/scripts/generators/extension_helper_generator.py @@ -1,10 +1,10 @@ #!/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) 2023-2024 RasterGrid Kft. +# 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. +# Copyright (c) 2023-2025 RasterGrid Kft. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -97,10 +97,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/pnext_chain_extraction_generator.py b/scripts/generators/pnext_chain_extraction_generator.py index 7a6048211a6..6100b797574 100644 --- a/scripts/generators/pnext_chain_extraction_generator.py +++ b/scripts/generators/pnext_chain_extraction_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. @@ -38,9 +38,9 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2023-2024 The Khronos Group Inc. - * Copyright (c) 2023-2024 Valve Corporation - * Copyright (c) 2023-2024 LunarG, Inc. + * Copyright (c) 2023-2025 The Khronos Group Inc. + * Copyright (c) 2023-2025 Valve Corporation + * Copyright (c) 2023-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/thread_safety_generator.py b/scripts/generators/thread_safety_generator.py index d1b627a1359..4883cc822f0 100644 --- a/scripts/generators/thread_safety_generator.py +++ b/scripts/generators/thread_safety_generator.py @@ -1,10 +1,10 @@ #!/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) 2023-2024 RasterGrid Kft. +# 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. +# Copyright (c) 2023-2025 RasterGrid Kft. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -88,10 +88,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/valid_flag_values_generator.py b/scripts/generators/valid_flag_values_generator.py index 2a19d43116d..f4dd5ff75e6 100644 --- a/scripts/generators/valid_flag_values_generator.py +++ b/scripts/generators/valid_flag_values_generator.py @@ -1,8 +1,8 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2024 The Khronos Group Inc. -# Copyright (c) 2024 Valve Corporation -# Copyright (c) 2024 LunarG, Inc. +# Copyright (c) 2025 The Khronos Group Inc. +# Copyright (c) 2025 Valve Corporation +# Copyright (c) 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. @@ -37,9 +37,9 @@ def generate(self): /*************************************************************************** * - * Copyright (c) 2024 The Khronos Group Inc. - * Copyright (c) 2024 Valve Corporation - * Copyright (c) 2024 LunarG, Inc. + * Copyright (c) 2025 The Khronos Group Inc. + * Copyright (c) 2025 Valve Corporation + * Copyright (c) 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/known_good.json b/scripts/known_good.json index 38686bfefd9..ef910b5a262 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.304" + "commit": "v1.4.305" }, { "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": "v1.4.304", + "commit": "v1.4.305", "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.304", + "commit": "v1.4.305", "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.304", + "commit": "v1.4.305", "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 43b8f167050..e19c2086ee3 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.304", + "api_version": "1.4.305", "implementation_version": "2", "description": "LunarG Device Profile Api Layer", "device_extensions": [